原题链接:
题解:
#include<iostream> int main(){ int i,j,k,day=0,sum=0,x=1; scanf("%d",&k); for(i=1;i<=k;i++){ for(j=1;j<=i;j++){ day++; sum+=i; if(day==k) break; } if(day==k) break; } printf("%d",sum); return 0; }
i | 1 | 2 | 3 | 4 |
j天数 | 1 | 2 | 3 | 4 |
sum金币 | 1 | 2*2 | 3*3 | 4*4 |
for(i=1;i<=k;i++){ // 第一重循环i最大不会超过k
for(j=1;j<=i;j++){ //第二重循环j用来控制每轮i下的天数,开始我还想着用k来除余之类的来得到i和j
day++;
sum+=i;
if(day==k) break;
}
if(day==k) break; //差点忽略,只用一个break只能跳出j层循环,不能跳出i层循环
for(j=1;j<=i;j++){ //第二重循环j用来控制每轮i下的天数,开始我还想着用k来除余之类的来得到i和j
day++;
sum+=i;
if(day==k) break;
}
if(day==k) break; //差点忽略,只用一个break只能跳出j层循环,不能跳出i层循环