noi 1.5 45:金币

描述

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。

你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。

输入

一个整数(范围1到10000),表示天数。

输出

骑士获得的金币数。输入一个整数(范围1到10000),表示天数。输出骑士获得的金币数。

样例输入

6

样例输出

14

法一
#include<iostream>
using namespace std;
int n;
int main()
{
    cin>>n;
    int t=0,s=0,z=0;//t表示当前每天可以得到几枚金币,s表示当前金币总数,z表示当前总天数
    while(1)
    {
        t++;
        if(t+z> n) break;
/*t=a既可以表示当前每天可以得到a枚金币,也可以表示得a枚金币的状态即将持续a天
,注意是即将持续,也就是这a*a枚金币在这时还没有累积,而z是当前已经计算了的天数。
当t+z>n时,也就是如果用a*a的当时累加,会使得到金币的天数>n,
所以要break,通过后面的for循环一天一天的加。*/
        s+=t*t;//t*t为这t天一共可得的金币数
        z+=t;
    }
    for(int i=z+1;i<=n;i++) s+=t;/*当上面t+z=n时,不会break,累加一次t*t,
    此时恰好得了n天的金币,z=n,for循环条件不满足,不执行。*/
    cout<<s;

法二

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int n,t=0,s=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=i;j++)
        {
            if(t>=n) break;//eg:t=6时说明已经循环了6天,当t=6进入循环是已经是第七天的钱
            s=s+i;
            t++;//t表示已经过的天数
        }
    }
    cout<<s;
    return 0;
}
时间: 2024-08-04 04:41:12

noi 1.5 45:金币的相关文章

整理小朋友在noi.openjudge上的作业(1)

NOI(题库正在建设中,做题纪录有可能会被删除,请注意) 第一章的统计放前面 1 编程基础之输入输出 10 0 0% 最基础有空补刷 2 编程基础之变量定义.赋值及转换 10 0 0% 最基础有空补刷 3 编程基础之算术表达式与顺序执行 20 0 0% 最基础有空补刷 4 编程基础之逻辑表达式与条件分支 21 0 0% 最基础有空补刷 5 编程基础之循环控制 45 10 22% 最基础有空补刷 6 编程基础之一维数组 15 5 33% 最基础有空补刷 7 编程基础之字符串 35 0 0% 有必要

【noi 2.7_2987】小兔子捡金币(算法效率)

题意:问蛇形回文的访问次序. 解法:很基础的一道题,先算出询问的点处在第几环,再用4个while一个个走一遍这一圈.P.S.我一直想办法想用不用while(),可是真的一直WA!所以用while()既方便又准确,不要小瞧她. P.P.S.本蒟蒻刷DP刷累了(不会做~(┬_┬)),便来做这题,可惜耗时也不小...... 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iost

noi.ac #45 计数

\(des\) 给定 \(n\) 的全排列 + 一个值域属于 \([1, n]\) 的元素构成长度为 \(n + 1\) 的序列 问长度为 \(i\) 的本质不同的子序列的个数 \(sol\) 小学计数题 记 \(p + 1, q - 1\) 的元素相同 从起点到第一个相同元素长度 \(p\) 从终点到第二个相同元素长度 \(q\) 对于长度为 \(i\) 的本质不同的子序列的个数 可以用全部的答案 - 出现重复的个数 显然全部的答案 \(n + 1 \choose i\) 对于重复的答案,只存

[NOI2011]Noi嘉年华

题目描述 NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办.每个嘉年华可能包含很多个活动,而每个活动只能在一个嘉年华中举办. 现在嘉年华活动的组织者小安一共收到了 n个活动的举办申请,其中第 i 个活动的起始时间为 Si,活动的持续时间为Ti.这些活动都可以安排到任意一个嘉年华的会场,也可以不安排. 小安通过广泛的调查发现,如果某个时刻,两个嘉年华会场同时有活动在进行(不包括活动的开始瞬间和结束瞬间)

bzoj4622 [NOI 2003] 智破连环阵

Description B国在耗资百亿元之后终于研究出了新式武器——连环阵(Zenith Protected Linked Hybrid Zone).传说中,连环阵是一种永不停滞的自发性智能武器.但经过A国间谍的侦察发现,连环阵其实是由M个编号为1,2,…,M的独立武器组成的.最初,1号武器发挥着攻击作用,其他武器都处在无敌自卫状态.以后,一旦第i(1<=i< M)号武器被消灭,1秒种以后第i+1号武器就自动从无敌自卫状态变成攻击状态.当第M号武器被消灭以后,这个造价昂贵的连环阵就被摧毁了.为

【noi 2.2_7891】一元三次方程求解(二分枚举)

对于noi上的题有2中解法: 1.数据很小(N=100),可以直接打for循环枚举和判断. 2.不会“三分”,便用二分.利用“两根相差>=1”和 f(x1)*f(x2)<0,转换意思为[x,x+1]内不会包含两个根,这样枚举可以保证不漏解.因此,枚举一个个根所在的区间,再用二分枚举找出根.其中,若N=10^5,由于保留2位小数,最好精确到4位小数计算.时间复杂度 O(N)=10^5+3*log(10^4),约为10^5. 以下附上二分的代码—— 1 //20160908 Ann 2 #incl

签到领金币脚本

1 #!/use/bin/env python 2 # -*- coding: utf-8 -* 3 # Author : nick 4 # Desc : v2ex每日签到 5 6 import urllib 7 import urllib2 8 import cookielib 9 import re 10 import sys 11 from bs4 import BeautifulSoup as bs 12 from datetime import datetime 13 14 15 re

2971 抓住那头牛 noi.openjudge

http://noi.openjudge.cn/ch0205/2971/ 总时间限制:  2000ms 内存限制:  65536kB 描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000).农夫有两种移动方式: 1.从X移动到X-1或X+1,每次移动花费一分钟 2.从X移动到2*X,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不动.农夫最少要花多少时间才能抓住牛? 输入 两个整数

【BZOJ 2436】 2436: [Noi2011]Noi嘉年华 (区间DP)

2436: [Noi2011]Noi嘉年华 Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办.每个嘉年华可能包含很多个活动,而每个活动只能在一个嘉年华中举办. 现在嘉年华活动的组织者小安一共收到了 n个活动的举办申请,其中第 i 个活动的起始时间为 Si,活动的持续时间为Ti.这些活动都可以安排到任意一个嘉年华的会场,也可以不安排. 小安通过广泛的调查发现,如果某个时刻,两个嘉