1100:金币
解题思路:
根据题意:
1、国王将金币作为工资,发给骑士。
第一天:骑士获得1金币
第二天:骑士获得2金币
第三天:骑士获得2金币
第三天:骑士获得3金币
第四天:骑士获得3金币
第五天:骑士获得3金币
......
以此类推,第N天每天收到N枚金币,N+1天收到N+1枚金币
从题意可以发现:
金币为1,只发1天,一天1枚
金币为2,连续发2天,一天2枚
金币为3,连续发3天,一天3枚
金币为4,连续发4天,一天4枚
所以解题思路如下:
1、使用一个for循环数金币
2、数金币循环内嵌套一个for循环用来数天数,天数不超过当前金币的数量
3、使用一个变量用来记录骑士每天收到的金币
4、使用一个变量用来数天数,从第一天到第n天。
5、在最内层循环中发完工资后,判断天数是不是到了,比如:第一天到第六天骑士获得多少钱,那么判断天数是不是到第六天了,如果是跳出内层循环
6、外层循环也需要跳出,所以在外层循环加一个判断是不是到第六天了,如果是跳出循环。
7、输出当前骑士收到的金币。
程序如下:
#include <iostream>
using namespace std;
int main()
{
int jin=0,tian=0;
int n;
cin>>n;
for(int i=1; i<=n; i++)//当前金币数
{
for(int j=1; j<=i; j++)//数天数,这个天数不超过金币数
{
jin=jin+i;//统计当前获得多少金币
tian++;//记录过了多少天
if(tian==n)//天数到了没,如果到了跳出循环终止数天数
{
break;
}
}
if(tian==n)//天数如果到了,跳出循环终止金币累加
{
break;
}
}
cout<<jin;//输出当前金币数
return 0;
}
标签:信奥,int,天数,金币,循环,通题,1100,骑士
From: https://www.cnblogs.com/longmaoxiansheng/p/17465686.html