题解 | #[NOIP2015]金币#
[NOIP2015]金币
https://www.nowcoder.com/practice/8f71f5670e6a45118d24d13868a2da9e
#include <stdio.h> // 从第一天开始,一个1个金币给一天,两个金币给两天,三个金币给三天.... // 用一个变量day记录天数,day从第0天开始,用一个coin变量记录金币的数量,coin从1开始,用一个变量sum记录所得金 // 币总数 // 每循环一次代表1天,执行sum += coin,day++,判断day是否等于coin,如果day等于coin,则coin个金币给了day // 天,就重置day等于0; coin++ // 第一次循环之后day等于coin,coin++变成2,day = 0,day重新记录,sum+=1,此sum时为1, // 之后循环两次,sum = 1 + 2 + 2,day 等于 2 等于 coin,coin++变成3,day又重新得0,以此类推... int main() { int k = 0; scanf("%d",&k); int day = 0; int coin = 1; int sum = 0; for (int i = 1; i <= k; i++) { if (day == coin) { coin++; day = 0; } sum += coin; day++; } printf("%d\n",sum); return 0; }