题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得了多少金币。
输入
只有1行,包含一个正整数K,表示发放金币的天数。
输出
只有1行,包含一个正整数,即骑士收到的金币数。
解题思路:先解除整数天所给的再算单个给出的。(暴力可满分!!!)
代码可复制
输入样例 复制
【输入样例1】 6 【输入样例2】 1000输出样例 复制
【输出样例1】 14 【输出样例2】 29820#include<bits/stdc++.h> using namespace std; int main() { int a,b=0,ans=0,i,test1=0,test2=0;定义变量 cin>>a; b=a; for(int i=1;i<=a+1;i++) //算出所给天数 例如6天 :1 2 2 3 3 3 { if(b>=i) { // cout<<i<<" ";测试数据 ans+=i*i; b-=i; test1+=i; if(test2<=i) { test2=i; } } } if(b>test1) { b-=test1; } // cout<<b;测试数据 // cout<<ans<<b;测试数据 // cout<<test1<<endl;测试数据 cout<<ans+((a-test1)*(test2+1)); // ans为给金币的有规律数,((a-test1)*(test2+1))为多出的天数所给的金币 }