华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4092|回复: 21
打印 上一主题 下一主题

P2669 金币

[复制链接]

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
跳转到指定楼层
#
发表于 2018-4-19 14:21:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。

请计算在前K天里,骑士一共获得了多少金币。

输入输出格式
输入格式:
输入文件只有1行,包含一个正整数K,表示发放金币的天数。

输出格式:
输出文件只有1行,包含一个正整数,即骑士收到的金币数。

输入输出样例
输入样例#1:
6
输出样例#1:
14
输入样例#2:
1000
输出样例#2:
29820
说明
【输入输出样例 1 说明】

骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,

每天收到三枚金币。因此一共收到 1+2+2+3+3+3=14 枚金币。

对于 100%的数据, 1 ≤ K ≤ 10,000。

优秀解法:
5楼
7楼
8楼
15楼
16楼
18楼


回复

使用道具 举报

0

主题

3

帖子

18

积分

新手上路

Rank: 1

积分
18
推荐
发表于 2018-4-20 20:19:01 | 只看该作者
#include<iostream>
using namespace std;
int k,i=1,jb,b;
bool b1,b2;
int main()
{
    cin>>k;
    for(;k>=i;i++)
    {
        k-=i;
        b++;
    }
    for(i=1;i<=b;i++)
    {
        jb=jb+i*i;
    }
    if(k>0)
    {jb=jb+k*(b+1);}
    cout<<jb;
    return 0;
}


b1 b2 有用吗?又是b,又是b1 b2 不怕搞错?
回复 支持 1 反对 1

使用道具 举报

胡炜尧 该用户已被删除
推荐
发表于 2018-5-17 21:50:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 1 反对 0

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
19#
 楼主| 发表于 2018-7-29 22:13:17 | 只看该作者
吴同学这个做法好!
回复 支持 反对

使用道具 举报

2

主题

105

帖子

306

积分

中级会员

Rank: 3Rank: 3

积分
306
18#
发表于 2018-7-29 21:45:22 | 只看该作者
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <map>
  6. #include <string>
  7. #include <vector>
  8. #include <queue>
  9. #include <stack>
  10. #include <cstdio>
  11. #include <cstdlib>
  12. using namespace std;
  13. int k,n=0,all=0;
  14. int main()
  15. {
  16.     scanf("%d",&k);
  17.     for(n=1;k-n>=0;k-=n,n++)
  18.         all+=n*n;
  19.     printf("%d\n",all+k*n);
  20.     return 0;
  21. }
复制代码
回复 支持 反对

使用道具 举报

0

主题

5

帖子

30

积分

新手上路

Rank: 1

积分
30
17#
发表于 2018-7-2 22:38:50 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. int s,k,a[11000],i,j,t;
  4. int main()
  5. {
  6.     t=i=1;
  7.     while (t<=10000)
  8.     {
  9.         for (j=1; j<=i; j++)
  10.         {
  11.             a[t]=i;  
  12.             t++;
  13.         }
  14.         i++;
  15.     }
  16.     cin>>k;
  17.     s=0;for (i=1;i<=k;i++) s=s+a[i];  
  18.     cout<<s;
  19.     return 0;
  20. }
复制代码
回复 支持 反对

使用道具 举报

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
16#
发表于 2018-6-26 16:43:23 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. int s,i,j,x=1,n;
  4. int main()
  5. {
  6.     cin>>n;
  7.     for(i=1;x<=n;i++)
  8.     {
  9.         for(j=1;(j<=i)&&(x<=n);j++)
  10.         {
  11.             s+=i;
  12.             x++;
  13.         }
  14.     }
  15. cout<<s<<endl;
  16.   return 0;
  17. }
复制代码
回复 支持 反对

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
15#
发表于 2018-6-25 09:46:22 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. int n,x,ans;
  4. int main(){
  5.         cin>>n;
  6.         while(n>0) ans+=n,n-=++x;
  7.         cout<<ans;
  8. }
复制代码
回复 支持 反对

使用道具 举报

14

主题

106

帖子

317

积分

中级会员

Rank: 3Rank: 3

积分
317
14#
发表于 2018-6-25 09:45:35 | 只看该作者
#include<iostream>
using namespace std;
int main()
{
    int a=0,s=0,i,j,b;
    cin>>b;
    for(i=1;a<b;i++)
    {
        for(j=1;j<=i;j++)
        {
            ++a;
            if(a>b) break;
            s+=i;
        }
    }
    cout<<s;
    return 0;
}
回复 支持 反对

使用道具 举报

0

主题

4

帖子

38

积分

新手上路

Rank: 1

积分
38
13#
发表于 2018-6-25 09:43:40 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4.     int n,ans(0),i;
  5.     cin>>n;
  6.     for (k=1;n-i>=0;n-=i++){
  7.         ans+=i*i;
  8.     }
  9.     cout<<ans+i*n;
  10.     return 0;
  11. }
复制代码
回复 支持 反对

使用道具 举报

2

主题

105

帖子

306

积分

中级会员

Rank: 3Rank: 3

积分
306
12#
发表于 2018-6-25 09:42:47 | 只看该作者
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <map>
  6. #include <string>
  7. #include <vector>
  8. #include <queue>
  9. #include <stack>
  10. #include <cstdio>
  11. #include <cstdlib>
  12. using namespace std;
  13. int k,n,all=0;
  14. int main()
  15. {
  16.     scanf("%d",&k);
  17.     for(n=1;k>=n;k-=n,n++)
  18.         all+=n*n;
  19.     printf("%d\n",all+k*n);
  20.     return 0;
  21. }
复制代码
回复 支持 反对

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
11#
 楼主| 发表于 2018-5-24 11:10:16 | 只看该作者
楼上WJL的这个做法不错!但是这两个循环可否合二为一?
回复 支持 反对

使用道具 举报

3

主题

50

帖子

365

积分

中级会员

Rank: 3Rank: 3

积分
365
10#
发表于 2018-5-23 21:44:13 | 只看该作者
本帖最后由 WJL 于 2018-8-9 20:14 编辑

  1. #include<iostream>
  2. using namespace std;
  3. int s,j;
  4. int c=0,i=1;
  5. int main()
  6. {cin>>s;
  7. for(;i<=s;i++)
  8. s-=i;
  9. for(j=1;j<=i-1;j++)
  10. c+=j*j;
  11. cout<<c+s*i<<endl;
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-2 04:29 , Processed in 0.136270 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表