题解 P2669 【金币】

· · 题解

算出总体思路:先用一个变量来代替相同金币的天数,这样就可以避免每次用金币加来减去最后都不知到是什么的情况。然后一个简单的for循环计算每天加上的金币数量就可以轻松终结代码~~~

#include<iostream>  
using namespace std;
int main(){
    int d,coin=0,j=1;  //定义天数d,金币数coin(记得初始化为0),j要等于下面for循环中的i
    cin>>d; //输入,
    for(int i=1;d>0;){   //循环
        if(j>0) d--;  
        coin+=i;    //每次将总金币数量加上每天的金币
        j--;    //将与i相等的j每次-1
        if(j>0&&d>0) continue;  //如果发一种金额的金币的天数和总天数仍不为0,跳过下面的代码,再次进入循环
        i++;    //如不满足上面条件,将金币数加一
        j=i;  //因为j要与i在每一次循环中保持相等关系,所以在continue条件不成立时要记得将j与i制成一样的
    }
    cout<<coin<<endl;
    return 0;  //日常AC
}

I hope my answer can help you ^_^