/* --------------------------------------------------------------------------------------------------------------------------- 1、运动会开了 N 天,一共发出金牌 M 枚。第一天发金 牌 1 枚加剩下的七分之一枚,第二天发金牌 2 枚加剩下 的七分之一枚,第 3 天发金牌 3 枚加剩下的七分之一枚, 以后每天都照此办理。到了第 N 天刚好还有金牌 N 枚, 到此金牌全部发完。编程求 N 和 M。 --------------------------------------------------------------------------------------------------------------------------- */ /**/ #include int F(int n, int &m) //若 n 天时,有金牌 m 枚;则前一天有金牌 N * 7/6 + N-1 枚, 即 n--天时,m = m/6*7 + n. { if(m%6 == 0){ //因金牌的数量必须为整数,则 m 和 m/6*7 + n 也为整数, 则 m 必须为 6 的整数倍 if(n == 1)return 1; //逆推至第一天时,返回 1,结束 main 函数中的 i 循环 else {n--; m = m/6*7 + n; F(n, m);} //当 n 不是第一天,调用 F,依次向前,并将金牌数存放至&m 中,即 M 中 } else return 0; //当 m 不是 6 的整数倍,返回 0,不结束 i 循环 } void main() { int N, M; for(int i = 1; i; i++) { M = i; //因第 N 天刚好还有金牌 N 枚,可以将 i 赋给 N M,判断是否可以推至第一天 N = i; if(F(N,M)) break; //返回 1,结束循环 } printf("N = %d M = %d\n", N, M); /*//验证 printf("\n 分析:\n"); for(i = 1; i <= N ; i++) { printf("N = %d 时,M = %d\n", i, M); M = (M - i)/7*6; } */ } /* --------------------------------------------------------------------------------------------------------------------------- 2、国王分财产。某国王临终前给儿子们分财产。他把 财产分为若干份,然后给第一个儿子一份,再加上剩余财产的1/10; 给第二个儿子两份,再加上剩余财产的1/10;……;给第i 个儿子i 份, 再加上剩余财产的1/10。每个儿子都窃窃自喜。以为得到了父王的偏 爱,孰不知国王是“一碗水端平”的。请用程序回答,老国王共有几 个儿子?财产共分成了多少份? ------------------------------------------------------------------------------...