NOI题库答案(1.5 编程基础之循环控制)(21—45题)
NOI网址:http://noi.openjudge.cn/
目录
21:角谷猜想
22:津津的储蓄计划
23:药房管理
24:正常血压
25:求特殊自然数
26:统计满足条件的4位数个数
27:级数求和
28:分离整数的各个数位
29:数字反转
30:含k个3的数
31:开关灯
32:求分数序列和
33:计算分数加减表达式的值
34:求阶乘的和
35:求出e的值
36:计算多项式的值
37:雇佣兵
38:计算多项式的导函数
39:与7无关的数
40:数1的个数
41:数字统计
42:画矩形
43:质因数分解
44:第n小的质数
45:金币
21:角谷猜想
总时间限制: 1000ms
内存限制: 65536kB
描述
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到1的过程输出来。
输入
一个正整数N(N <= 2,000,000)
输出
从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。
样例输入
5
样例输出
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End
#include <iostream>
using namespace std;
int main()
{long long n;cin>>n;if(n==1)cout<<"End";else{while(n!=1){if(n%2==1){cout<<n<<"*3+1="<<3*n+1<<endl;n=3*n+1;}else{cout<<n<<"/2="<<n/2<<endl;n/=2;}}cout<<"End";}return 0;
}
22:津津的储蓄计划
总时间限制: 1000ms
内存限制: 65536kB
描述
津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
输入
包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
输出
包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
样例输入
样例 #1:
290
230
280
200
300
170
340
50
90
80
200
60样例 #2:
290
230
280
200
300
170
330
50
90
80
200
60
样例输出
样例 #1:
-7样例 #2:
1580
#include <iostream>
using namespace std;
int main()
{int i,sum1=0;int a[15];double sum2=0;for(i=1;i<=12;i++)cin>>a[i];for(i=1;i<=12;i++){sum1+=300;if(sum1<a[i]){cout<<-i;break;}sum1-=a[i];if(sum1>100) {sum2+=sum1/100*100;sum1=sum1%100;}}if(i==13)cout<<sum2*1.2+sum1;return 0;
}
23:药房管理
总时间限制: 1000ms
内存限制: 65536kB
描述
随着信息技术的蓬勃发展,医疗信息化已经成为医院建设中必不可少的一部分。计算机可以很好地辅助医院管理医生信息、病人信息、药品信息等海量数据,使工作人员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大地提高了医院整体的工作效率。
对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已 知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒 绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。
输入
共3行
第一行是每天开始时的药品总量m
第二行是这一天取药的人数n(0 < n <= 100)
第三行共有n个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序),两数之间以空格分隔
输出
只有1行,为这一天没有取上药品的人数。
样例输入
30
6
10 5 20 6 7 8
样例输出
2
#include <iostream>
using namespace std;
int main()
{int m,n,i,sum=0;int a[105];cin>>m>>n;for(i=1;i<=n;i++)cin>>a[i];for(i=1;i<=n;i++){if(m>=a[i])m-=a[i];else{sum++;continue;}}cout<<sum;return 0;
}
24:正常血压
总时间限制: 1000ms
内存限制: 65536kB
描述
监护室每小时测量一次病人的血压,若收缩压在90 - 140之间并且舒张压在60 - 90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数。
输入
第一行为一个正整数n,n < 100
其后有n行,每行2个正整数,分别为一次测量的收缩压和舒张压,中间以一个空格分隔。
输出
输出仅一行,血压连续正常的最长小时数。
样例输入
4
100 80
90 50
120 60
140 90
样例输出
2
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
bool isNormal(int high, int low)
{if (high>=90&&high<=140&&low>=60&&low<=90)return true;return false;
}
int main()
{int n, high, low, temp=0, x=0;bool last=false; // 记录上一个小时是否正常cin >> n;for (int i=0; i<n; i++){if (!last) temp = 0;cin >> high >> low;last = isNormal(high, low);if (last){temp++;if (temp > x) x = temp;}}cout << x << endl;return 0;
}
25:求特殊自然数
总时间限制: 1000ms
内存限制: 65536kB
描述
一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示。
输入
无。
输出
三行:
第一行是此自然数的十进制表示;
第二行是此自然数的七进制表示;
第三行是此自然数的九进制表示。
样例输入
(无)
样例输出
(不提供)
#include <iostream>
using namespace std;
int main()
{int i;for (i = 65; i <= 342; i++) {if ((i % 9 == i / 49) &&(i / 9 % 9 == i / 7 % 7) &&(i / 81 == i % 7)) {cout << i << endl;cout << i / 49 << i / 7 % 7 << i % 7 << endl;cout << i / 81 << i / 9 % 9 << i % 9 << endl;break;}}return 0;
}
26:统计满足条件的4位数个数
总时间限制: 1000ms
内存限制: 65536kB
描述
给定若干个四位数,求出其中满足以下条件的数的个数:
个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。
输入
输入为两行,第一行为四位数的个数n,第二行为n个的四位数,数与数之间以一个空格分开。(n <= 100)
输出
输出为一行,包含一个整数,表示满足条件的四位数的个数。
样例输入
5
1234 1349 6119 2123 5017
样例输出
3
#include <iostream>
using namespace std;
int main()
{int n,i,sum=0;int b,c,d,e;int a[105];cin>>n;for(i=0;i<n;i++)cin>>a[i];for(i=0;i<n;i++){e=a[i]%10;a[i]=a[i]/10;d=a[i]%10;a[i]=a[i]/10;c=a[i]%10;a[i]=a[i]/10;b=a[i]%10;if((e-b-c-d)>0)sum++;}cout<<sum;return 0;
}
27:级数求和
总时间限制: 1000ms
内存限制: 65536kB
描述
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入
一个整数K。
输出
一个整数n。
样例输入
1
样例输出
2
#include <iostream>
using namespace std;
int main()
{int k,i=1;double s,sum=0;cin>>k;while(sum<=k){s=1.0/i;sum+=s;i++;}cout<<i-1;return 0;
}
28:分离整数的各个数位
总时间限制: 1000ms
内存限制: 65536kB
描述
给定一个整数,要求从个位开始分离出它的每一位数字。
输入
输入一个整数,整数在1到100000000之间。
输出
从个位开始按照从低位到高位的顺序依次输出每一位数字。数字之间以一个空格分开。
样例输入
123
样例输出
3 2 1
#include <iostream>
using namespace std;
int main()
{long n;int i,a;cin>>n;while(n!=0){a=n%10;n/=10;cout<<a<<" ";}return 0;
}
29:数字反转
总时间限制: 1000ms
内存限制: 65536kB
描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入
输入共 1 行,一个整数N。
-1,000,000,000 ≤ N≤ 1,000,000,000。
输出
输出共 1 行,一个整数,表示反转后的新数。
样例输入
样例 #1:
123样例 #2:
-380
样例输出
样例 #1:
321样例 #2:
-83
#include<iostream>
#include<cmath>
using namespace std;
int main()
{int n;int s=0;cin>>n;if(n<0) cout<<"-";n=abs(n);do{s=s*10+n%10;n/=10;}while(n>0);cout<<s;return 0;
}
30:含k个3的数
总时间限制: 1000ms
内存限制: 65536kB
描述
输入两个正整数 m 和 k,其中1 < m < 100000,1 < k < 5 ,判断 m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。
例如,输入:
43833 3
满足条件,输出YES。
如果输入:
39331 3
尽管有3个3,但不能被19整除,也不满足条件,应输出NO。
输入
m 和 k 的值,中间用单个空格间隔。
输出
满足条件时输出 YES,不满足时输出 NO。
样例输入
43833 3
样例输出
YES
#include<iostream>
using namespace std;
int main()
{int m,k,a,sum=0;cin>>m>>k;int p=m;for(;m>0;m/=10){a=m%10;if(a==3)sum++;}if((sum==k)&&(p%19==0))cout<<"YES";elsecout<<"NO";return 0;
}
31:开关灯
总时间限制: 1000ms
内存限制: 65536kB
描述
假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。
第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。
请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。
输入
输入正整数N和M,以单个空格隔开。
输出
顺次输出关闭的灯的编号,其间用逗号间隔。
样例输入
10 10
样例输出
1,4,9
#include <iostream>
using namespace std;
int main()
{int n,m,i,j,flag;cin>>n>>m;cout<<1;for(i=2;i<=n;i++){flag=1;for(j=1;j<=m;j++){if(i%j==0){if(flag==0)flag=1;elseflag=0;}elsecontinue;}if(flag==0)cout<<","<<i; }return 0;
}
32:求分数序列和
总时间限制: 1000ms
内存限制: 65536kB
描述
有一个分数序列 q1/p1,q2/p2,q3/p3,q4/p4,q5/p5,.... ,其中qi+1= qi+ pi, pi+1=qi, p1= 1, q1= 2。比如这个序列前6项分别是2/1,3/2,5/3,8/5,13/8,21/13。求这个分数序列的前n项之和。
输入
输入有一行,包含一个正整数n(n <= 30)。
输出
输出有一行,包含一个浮点数,表示分数序列前n项的和,精确到小数点后4位。
样例输入
2
样例输出
3.5000
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{int n,i;double sum=0;double a[35],b[35],c[35];cin>>n;a[0]=2;b[0]=1;for(i=1;i<n;i++){a[i]=a[i-1]+b[i-1];b[i]=a[i-1];c[i]=a[i]/b[i];sum+=c[i];}sum=sum+2.0;printf("%.4lf",sum);return 0;
}
33:计算分数加减表达式的值
总时间限制: 1000ms
内存限制: 65536kB
描述
编写程序,输入n的值,求 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 - 1/8 + ... + (-1)n-1·1/n 的值。
输入
输入一个正整数n。1 <= n <= 1000。
输出
输出一个实数,为表达式的值,保留到小数点后四位。
样例输入
2
样例输出
0.5000
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{int n,i;double s=0;cin>>n;for(i=1;i<=n;i++){if(i%2==0)s=s-1/double(i);elses=s+1/double(i);}printf("%.4lf",s);return 0;
}
34:求阶乘的和
总时间限制: 1000ms
内存限制: 65536kB
描述
给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!)
输入
输入有一行,包含一个正整数n(1 < n < 12)。
输出
输出有一行:阶乘的和。
样例输入
5
样例输出
153
#include<iostream>
#include<stdio.h>
using namespace std;
int main ()
{int n,j,s=1,sum=0;cin>>n;for(j=1;j<=n;j++){s=s*j;sum+=s;}cout<<sum;return 0;
}
35:求出e的值
总时间限制: 1000ms
内存限制: 65536kB
描述
利用公式e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! 求e 。
输入
输入只有一行,该行包含一个整数n(2<=n<=15),表示计算e时累加到1/n!。
输出
输出只有一行,该行包含计算出来的e的值,要求打印小数点后10位。
样例输入
10
样例输出
2.7182818011
提示
1、e以及n!用double表示
2、要输出浮点数、双精度数小数点后10位数字,可以用下面这种形式:
printf("%.10f", num);
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{int n;double i,j=1,s=0,e=0;cin>>n;for(i=1;i<=n;i++){j*=1/i;s+=j;}e=s+1;printf("%.10lf",e);return 0;
}
36:计算多项式的值
总时间限制: 1000ms
内存限制: 65536kB
描述
假定多项式的形式为xn+xn-1+…+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值。
输入
输入仅一行,包括x和n,用单个空格隔开。x在float范围内,n <= 1000000。
输出
输出一个实数,即多项式的值,精确到小数点后两位。保证最终结果在float范围内。
样例输入
2.0 4
样例输出
31.00
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{int n,i;double x,y=0;cin>>x>>n;double s=x;for(i=1;i<=n;i++){y=y+s;s=s*x;}y=y+1;printf("%.2lf",y);return 0;
}
37:雇佣兵
总时间限制: 1000ms
内存限制: 65536kB
描述
雇佣兵的体力最大值为M,初始体力值为0、战斗力为N、拥有X个能量元素。
当雇佣兵的体力值恰好为M时,才可以参加一个为期M天的战斗期,战斗期结束体力值将为0。在同一个战斗期内,雇佣兵每连续战斗n天,战斗力就会上升1点,n为当前战斗期开始时的战斗力。
一个战斗期结束后,雇佣兵需要用若干个能量元素使其体力恢复到最大值M,从而参加下一个战斗期。每个能量元素恢复的体力值不超过当前的战斗力。每个能量元素只能使用一次。
请问:雇佣兵的战斗力最大可以到达多少。
输入
一行包括三个整数M、N、X,相邻两个整数之间用单个空格隔开。M、N、X均为不超过10000的正整数。
输出
输出一个整数,为雇佣兵的最大战斗力。
样例输入
5 2 10
样例输出
6
#include <iostream>
using namespace std;
int main()
{int m,n,x,t;cin>>m>>n>>x;while(x>0){t=m/n;if(m%n!=0)t++; //这个t不是上升过后的点数 if(x<t)break; //当x<t,即x-t<0,能量元素小于零,跳出循环 x-=t; //减过后的能量元素 t=m/n;n+=t; //战斗力上升过后的点数 }cout<<n;return 0;
}
38:计算多项式的导函数
总时间限制: 1000ms
内存限制: 65536kB
描述
计算多项式的导函数是一件非常容易的任务。给定一个函数f(x),我们用f'(x)来表示其导函数。我们用x^n来表示x的n次幂。为了计算多项式的导函数,你必须知道三条规则:
(1)、(C)' = 0 如果C是常量
(2)、(C*x^n)' = C*n*x^(n-1) 如果n >= 1且C是常量
(3)、(f1(x)+f2(2))' = f1'(x)+f2'(x)
容易证明,多项式的导函数也是多项式。
现在,请你编写一个程序,给定一个不包含负系数且已合并好同幂次项的多项式f(x),计算出它的导函数。
输入
输入有两行。
第一行是一个整数n(0 <= n <= 100)表明多项式的最高次幂为n。
第二行包含n+1个非负整数,Cn ,Cn-1 ,Cn-2 ,Cn-3 ,Cn-4 ,… ,C1,C0(0 <= Ci <= 1000)且Cn != 0。Ci是幂次为i的项的系数。
输出
在一行内输出f'(x)的结果。
(1) 如果g(x) = 0那么直接输出0
(2) 如果g(x)形如Cm(x^m)+Cm-1(x^(m-1))+…+C0(Cm!=0)那么输出Cm…C0
(3) 相邻整数之间有单个空格。
样例输入
3
0
10
2
3 2 1
3
10 0 1 2
样例输出
0
6 2
30 0 1
#include<cstdio>
int main()
{int n,c;scanf("%d",&n);if(!n){printf("0");return 0;}for(int i=n;i>0;i--){scanf("%d",&c);printf("%d ",c*i);} return 0;
}
39:与7无关的数
总时间限制: 1000ms
内存限制: 65536kB
描述
一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n < 100)的与7无关的正整数的平方和.
输入
输入为一行,正整数n(n < 100)
输出
输出一行,包含一个整数,即小于等于n的所有与7无关的正整数的平方和。
样例输入
21
样例输出
2336
#include <iostream>
using namespace std;
int main()
{int n,i,j,sum=0;cin>>n;for(i=1;i<=n;i++){if((i%7)!=0&&(i%10)!=7&&(i/10)!=7){j=i*i;sum+=j;}}cout<<sum;return 0;
}
40:数1的个数
总时间限制: 1000ms
内存限制: 65536kB
描述
给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。
例如当n=2时,写下1,2。这样只出现了1个“1”;当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12。这样出现了5个“1”。
输入
正整数n。1 <= n <= 10000。
输出
一个正整数,即“1”的个数。
样例输入
12
样例输出
5
#include <iostream>
using namespace std;
int main()
{int n,i,temp,sum=0;cin>>n;for(i=1;i<=n;i++){temp=i;while(temp!=0){if(temp%10==1)sum++;temp/=10;}}cout<<sum;return 0;
}
41:数字统计
总时间限制: 1000ms
内存限制: 65536kB
描述
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
输入
输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。
输出
输出共 1 行,表示数字 2 出现的次数。
样例输入
样例 #1:
2 22样例 #2:
2 100
样例输出
样例 #1:
6样例 #2:
20
#include <iostream>
using namespace std;
int main()
{int L,R;int i,n,sum=0;cin>>L>>R;for(i=L;i<=R;i++){n=i;while(n!=0){if(n%10==2)sum++;n/=10;}}cout<<sum;return 0;
}
42:画矩形
总时间限制: 1000ms
内存限制: 65536kB
描述
根据参数,画出矩形。
输入
输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。
输出
输出画出的图形。
样例输入
7 7 @ 0
样例输出
@@@@@@@
@ @
@ @
@ @
@ @
@ @
@@@@@@@
#include <iostream>
using namespace std;
int main()
{int h,w,i,j;char n;bool x;cin>>h>>w>>n>>x;for(i=1;i<=h;i++){ if(x==1)for(j=1;j<=w;j++)cout<<n; if(x==0)for(j=1;j<=w;j++)if(i!=1&&i!=h&&j!=1&&j!=w)cout<<" ";elsecout<<n;cout<<endl;}return 0;
}
43:质因数分解
总时间限制: 1000ms
内存限制: 65536kB
描述
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
输入
输入只有一行,包含一个正整数 n。
对于60%的数据,6 ≤ n ≤ 1000。
对于100%的数据,6 ≤ n ≤ 2*10^9。
输出
输出只有一行,包含一个正整数 p,即较大的那个质数。
样例输入
21
样例输出
7
#include <iostream>
#include <math.h>
using namespace std;
int main()
{int n;cin>>n;for(int i=2;i<sqrt(n);i++)if(n%i==0){cout<<n/i;break;} return 0;
}
44:第n小的质数
总时间限制: 1000ms
内存限制: 65536kB
描述
输入一个正整数n,求第n小的质数。
输入
一个不超过10000的正整数n。
输出
第n小的质数。
样例输入
10
样例输出
29
#include<iostream>
#include<math.h>
using namespace std;
int main()
{long n,i=2,count=0;long j,flag,t;cin>>n; while(count<n){j=2;flag=0;for(j=2;j<=sqrt(i);j++){if(i%j==0){flag=1;break;}}if(flag==0) count++;i++;}cout<<i-1;return 0;
}
45:金币
总时间限制: 1000ms
内存限制: 65536kB
描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
输入
一个整数(范围1到10000),表示天数。
输出
骑士获得的金币数。
样例输入
6
样例输出
14
#include<iostream>
using namespace std;
int main()
{int n;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;return 0;
}
如有错误,欢迎指正!
NOI题库答案(1.5 编程基础之循环控制)(21—45题)相关推荐
- OpenJudge NOI 1.5 编程基础之循环控制(21-30题)C++ 解题思路
续上一篇文章OpenJudge NOI 1.5编程基础之循环控制(11-20题) C++ 解题思路_Leleprogrammer的博客-CSDN博客续上一篇文章.https://blog.csdn.n ...
- OpenJudge NOI 1.5编程基础之循环控制(31-40题)C++ 解题思路
续上一篇文章.OpenJudge NOI 1.5 编程基础之循环控制(21-30题)C++ 解题思路_Leleprogrammer的博客-CSDN博客续上一篇文章OpenJudge NOI 1.5编程 ...
- 1.5 编程基础之循环控制 21 角谷猜想--方法二
/* 1.5编程基础之循环控制 21 角谷猜想 http://noi.openjudge.cn/ch0105/21/ */ #include<bits/stdc++.h> using na ...
- 1.5编程基础之循环控制 21 角谷猜想
http://noi.openjudge.cn/ch0105/21/ /* 1.5编程基础之循环控制 21 角谷猜想 http://noi.openjudge.cn/ch0105/21/ */ #in ...
- python编程基础题库_大学moocPython编程基础题库及答案
参考答案如下 大学间接赞扬的方式可能受到意想不到的效果.() 编程郑玄对"一人贪戾"的"戾"的解释为(),形容在欲望的追寻中出现的人与人的矛盾状态. 郑谷有&l ...
- python编程狮题库答案_Python编程狮-零基础学Python dans l’App Store
Python编程狮是W3Cschool编程狮旗下专门为零基础Python编程爱好者打造的一款入门工具App,致力于帮助初学者入门,轻松迈入编程世界.学Python,从这里开始! [零基础也能学]初学者 ...
- noi题库(noi.openjudge.cn) 1.5编程基础之循环控制T36——T45
T36 计算多项式的值 描述 假定多项式的形式为xn+xn-1+-+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值. 输入 输入仅一行,包括x和n,用单个空格隔开.x在flo ...
- NOI / 1.5编程基础之循环控制——21:角谷猜想
总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1.如 ...
- matlab验证角谷猜想问题,角谷猜想1.5编程基础之循环控制21
一道基础的ACM数学编程题 纠结下,k-base这是指k进制,不是指k位的数.这个题的意思是,找出n的个数,n的意思是,能被一个多位数整除,同时该每个数相加后也能被整除.下面说下为什么这个多位数(m位 ...
- 计算机网络工程师题库华为,近五年华为各类工程师面试精典题库及答案详解.pdf...
近五年华为各类工程师面试精典题库及答案详解 近五年华为各类工程师面试精典题 近五年华为各类工程师面试精典题 近近五五年年华华为为各各类类工工程程师师面面试试精精典典题题 库及答案详解 库及答案详解 库 ...
最新文章
- 超越最新无监督域自适应方法,研究人员提轻量CNN新架构OSNet
- R语言ggplot2绘制平滑曲线的折线图简单小例子
- WorkFlow入门Step.4—Adding Procedural Elements-For-WF4.0-(续)
- 两种控制器的跳转与回跳
- 您试图打开以前版本的Microsoft Office创建的文件。注册表策略设置已阻止此文件在该版本中打开的解决办法
- SpringBoot连接MQTT进行发布消息时取消保留消息
- html获取微信code,get-weixin-code.html
- WPF 基础控件之 DatePicker 样式
- element js 包含字符_selenium3.x(10)js弹框处理
- c++ for循环 流程图_python 零基础必知--条件控制与循环语句
- 支付渠道路由系统进化史
- TortoiseSVN的安装和使用
- .NET Compact Framework 多线程下的等待事件
- Leetcode每日一题:168.excel-sheet-column-title(Excel表名称)
- Git服务器的搭建和使用
- go-mysql数据-查询--输入数据--实战2
- Selenium调用使用360浏览器,QQ浏览器,遨游浏览器,猎豹浏览器,Chromium
- android 后台运行管理,Android 后台运行白名单实现保活
- Sqlserver2000服务器安装配置
- 第五章 执行计划详解