/* --------------------------------------------------------------------------------------------------------------------------- 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