骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到 1+2+2+3+3+3=141+2+2+3+3+3=14 枚金币。
那么对于1 22 333 4444 55555.........,想到两个未知数x y,x表示钱,y表示表示往后数y天获得的币都是x个,之后就想到y--结束后给出x++,再让y=x。
于是
#include <stdio.h>
int n, y, x, s;
int main()
{
int n, s = 0 ,x, y;
x = 1; y = 1;//第一天(往后的一天),获得1个金币
scanf_s("%d", &n);
for (int i = 1; i <= n; i++) //要发n天金币
{
s += x; //累加
y--; //过了一天
if (y == 0) //要更新数据
{
x++; //每天获得金币的数量+1
y = x; //出现1 22 333 4444......
}
}
printf("%d", s);
retu