3 solutions
-
2
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int day=0; int coins=0; for(int i=1;i<=n;i++) //枚举发多少枚金币 { for(int j=1;j<=i;j++) //发i枚金币的第j天 { day++; //天数增加 coins+=i; //金币数目增加 if(day==n) //已经发了对应的天数了 { cout<<coins; return 0; } } } return 0; }
-
-3
#include<iostream> using namespace std; int main() { int n; cin >> n; int h=0;//记录前一个i int l = 1 , i, sum = 0; for(i=1;i<=n;i+=l)//这个过程请读者带数运行以下就理解了 { sum+=l*(i-h);//总的金币相加 l++;//下一次给的金币数 h=i;//记录前一个i,(i-h)就可以得到发工资都相同得天数 } if(i!=n)//如果不相等就说明sum小于真实值,就是不满足下一个同样工资得天数!=(i-h)个; { sum+=(n-h)*l;//将剩余得加起来; } cout<<sum; }
- 1
Information
- ID
- 886
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 148
- Accepted
- 53
- Uploaded By