例题
708.偶数
编写一个程序,输出 11 到 100100 之间(包括 11 和 100100)的全部偶数。
输入格式
无输入。
输出格式
输出全部偶数,每个偶数占一行。
输入样例
No input
输出样例
2
4
6
...
100
相关代码
#include<iostream>
using namespace std;
int main()
{
for(int i=1;i<=100;i++)
{
if(i%2==0)cout<<i<<endl;
}
return 0;
}
709. 奇数
输入一个整数 XX,输出 11 到 XX 之间(包括 11 和 XX)的全部奇数。
输入格式
一个整数 XX。
输出格式
输出所有满足条件的奇数,每个数占一行。
数据范围
1≤X≤10001≤X≤1000
输入样例:
8
输出样例:
1
3
5
7
相关代码
#include<iostream>
using namespace std;
int main()
{
int x;
cin>>x;
1for(int i=1;i<=x;i++)
{
if(i%2!=0)cout<<i<<endl;
}
return 0;
}
712. 正数
输入 66 个实数,它们要么是正数,要么是负数。
请你统计并输出正数的个数。
输入格式
六个数字,每个占一行。
输出格式
输出格式为 x positive numbers
,其中 xx 为正数的个数。
数据范围
输入数字的绝对值不超过 100100。
输入样例:
7
-5
6
-3.4
4.6
12
输出样例:
4 positive numbers
相关代码
#include<iostream>
using namespace std;
int main()
{
double n;
int x=0;
for(int i=1;i<=6;i++)
{
cin>>n;
if(n>0)x++;
}
cout<<x<<" positive numbers"<<endl;
return 0;
}
714. 连续奇数的和 1
给定两个整数 XX 和 YY,输出在他们之间(不包括 XX 和 YY)的所有奇数的和。
输入格式
第一行输入 XX,第二行输入 YY。
输出格式
输出一个整数,表示所有满足条件的奇数的和。
数据范围
−100≤X,Y≤100−100≤X,Y≤100
输入样例1:
6
-5
输出样例1:
5
输入样例2:
15
12
输出样例2:
13
输入样例3:
12
12
输出样例3:
0
相关代码
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int x,y,s=0;
cin>>x>>y;
if(x>y)swap(x,y);
for(int i=x+1;i<y;i++)
{
if(i%2!=0)s+=i;
}
cout<<s<<endl;
return 0;
}
716. 最大数和它的位置
给定 100100 个整数,请你找出其中最大的数字,以及它的输入位置(位置从 11 开始)。
输入格式
共 100100 行,每行包含一个整数。
输出格式
第一行输出最大的数字。
第二行输出该数字的输入位置。
数据范围
1≤输入数字≤500001≤输入数字≤50000,
保证输入数字互不相同。
输入样例:
22229
48558
24992
4755
11923
...
20213
输出样例:
48558
2
相关代码
#include<iostream>
using namespace std;
int main()
{
int a[110],t=0,y;
for(int i=1;i<=100;i++)
{
cin>>a[i];
if(a[i]>t){
t=a[i];
y=i;
}
}cout<<t<<endl<<y;
return 0;
}
721. 递增序列
读取一系列的整数 XX,对于每个 XX,输出一个 1,2,…,X1,2,…,X 的序列。
输入格式
输入文件中包含若干个整数,其中最后一个为 00,其他的均为正整数。
每个整数占一行。
对于输入的正整数,按题目要求作输出处理。
对于最后一行的整数 00,不作任何处理。
输出格式
对于每个输入的正整数 XX,输出一个从 11 到 XX 的递增序列,每个序列占一行。
数据范围
1≤X≤1001≤X≤100
输入样例:
5
10
3
0
输出样例:
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
1 2 3
相关代码
#include<iostream>
using namespace std;
int main()
{
int x;
while(cin>>x)
{
if(x==0)break;
else for(int i=1;i<=x;i++)cout<<i<<" ";
cout<<endl;
}
return 0;
}
720. 连续整数相加
读入两个整数值 AA 和 NN,计算从 AA 开始的 NN 个连续整数的和。
注意,如果读入的 NN 为 00 或负数,则继续读取数字直至读入 NN 值为正整数为止。
输入格式
共一行,包含整数 AA 和若干个整数 NN(不超过 100100 个)。
输出格式
一个整数,表示从 AA 开始的 NN 个连续整数的和。
数据范围
1≤A≤1001≤A≤100,
−100≤N≤100−100≤N≤100
输入样例1:
3 2
输出样例1:
7
输入样例2:
3 -1 0 -2 2
输出样例2:
7
相关代码
#include<iostream>
using namespace std;
int main()
{
int a,n,s=0;
cin>>a;
while(cin>>n,n<=0);
for(int j=1;j<=n;a++,j++)s=s+a;
cout<<s<<endl;
return 0;
}
724. 约数
输入一个整数 NN,按照从小到大的顺序输出它的全部约数。
输入格式
一个整数 NN。
输出格式
输出全部约数,每个约数占一行。
数据范围
1≤N≤10001≤N≤1000
输入样例:
6
输出样例:
1
2
3
6
相关代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
if(n%i==0)cout<<i<<endl;
return 0;
}
723. PUM
输入两个整数 NN 和 MM,构造一个 NN 行 MM 列的数字矩阵,矩阵中的数字从第一行到最后一行,按从左到右的顺序依次为 1,2,3,…,N×M1,2,3,…,N×M。
矩阵构造完成后,将每行的最后一个数字变为 PUM。
输出最终矩阵。
输入格式
共一行,包含两个整数 NN 和 MM。
输出格式
输出最终矩阵,具体形式参照输出样例。
数据范围
1≤N,M≤201≤N,M≤20
输入样例:
7 4
输出样例:
1 2 3 PUM
5 6 7 PUM
9 10 11 PUM
13 14 15 PUM
17 18 19 PUM
21 22 23 PUM
25 26 27 PUM
相关代码
#include<iostream>
using namespace std;
int main()
{
int n,m,a[30][30];
cin>>n>>m;
for(int i=1;i<=n*m;i++)
{
if(i%m==0)cout<<"PUM"<<endl;
else cout<<i<<" ";
}
return 0;
}
习题
715. 余数
输入一个整数 NN,请按顺序输出 11 到 1000010000 之间(不包括 11 和 1000010000)的所有除以 NN 余 22 的数字。
输入格式
一个整数 NN。
输出格式
输出所有满足条件的数字,从小到大每行输出一个。
数据范围
2<N<100002<N<10000
输入样例:
13
输出样例:
2
15
28
41
...
相关代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<10000;i++)
if(i%n==2)cout<<i<<endl;
return 0;
}
710. 六个奇数
读取一个整数 XX,输出 XX 之后的 66 个奇数,如果 XX 也是奇数,那么它也算作 66 个奇数之一。
输入格式
一个整数 XX。
输出格式
所有满足条件的奇数,每个占一行。
数据范围
1≤X≤1001≤X≤100
输入样例:
9
输出样例:
9
11
13
15
17
19
相关代码
#include<iostream>
using namespace std;
int main()
{
int x,cnt=0;
cin>>x;
for(int i=x;cnt<6;i++)
if(i%2!=0)cnt++,cout<<i<<endl;
return 0;
}
711. 乘法表
输入一个整数 NN,输出 NN 的乘法表,如下:
1 x N = N
2 x N = 2N
...
10 x N = 10N
输入格式
一个整数 NN。
输出格式
输出 NN 的乘法表,具体形式参照输出样例。
数据范围
1<N<10001<N<1000
输入样例:
140
输出样例:
1 x 140 = 140
2 x 140 = 280
3 x 140 = 420
4 x 140 = 560
5 x 140 = 700
6 x 140 = 840
7 x 140 = 980
8 x 140 = 1120
9 x 140 = 1260
10 x 140 = 1400
相关代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=10;i++)
cout<<i<<" x "<<n<<" = "<<i*n<<endl;
return 0;
}
718. 实验
医学部一共进行了 NN 场动物实验。
共有三种小动物可用来实验,分别是青蛙、老鼠和兔子。
每次实验都会选取其中一种动物来参与实验,选取数量若干。
现在请你统计一下医学部一共用了多少小动物,每种分别用了多少,每种动物使用数量占总量的百分比分别是多少。
输入格式
第一行包含整数 NN,表示实验次数。
接下来 NN 行,每行包含一个整数 AA(表示一次实验使用的小动物的数量)和一个字符 TT(表示一次实验使用的小动物的类型,C
表示兔子(coney),R
表示老鼠(rat),F
表示青蛙(frog))。
输出格式
请你参照输出样例,输出所用动物总数,每种动物的数量,以及每种动物所占百分比。
注意输出百分比时,保留两位小数。
数据范围
1≤N≤1001≤N≤100,
1≤A≤151≤A≤15
输入样例:
10
10 C
6 R
15 F
5 C
14 R
9 C
6 R
8 F
5 C
14 R
输出样例:
Total: 92 animals
Total coneys: 29
Total rats: 40
Total frogs: 23
Percentage of coneys: 31.52 %
Percentage of rats: 43.48 %
Percentage of frogs: 25.00 %
相关代码
#include<iostream>
using namespace std;
int main()
{
int n,a,c=0,r=0,f=0;
char t;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a>>t;
if(t=='C')c+=a;
if(t=='R')r+=a;
if(t=='F')f+=a;
}
printf("Total: %d animals\n",c+r+f);
printf("Total coneys: %d\n",c);
printf("Total rats: %d\n",r);
printf("Total frogs: %d\n",f);
printf("Percentage of coneys: %.2lf %%\n",1.0*c*100/(c+r+f));
printf("Percentage of rats: %.2lf %%\n",1.0*r*100/(c+r+f));
printf("Percentage of frogs: %.2lf %%\n",1.0*f*100/(c+r+f));
return 0;
}
713. 区间 2
读取 NN 个整数 X1,X2,…,XNX1,X2,…,XN,判断这 NN 个整数中有多少个在 [10,20][10,20] 的范围内,有多少个在范围外。
输入格式
第一行包含整数 NN,表示共有 NN 个整数需要进行判断。
接下来 NN 行,每行包含一个整数 XiXi。
输出格式
第一行输出 x in
,其中 xx 为在范围内的整数的数量。
第二行输出 y out
,其中 yy 为在范围外的整数的数量。
数据范围
1≤N≤100001≤N≤10000,
−107<Xi<107−107<Xi<107
输入样例:
4
14
123
10
-25
输出样例:
2 in
2 out
相关代码
#include<iostream>
using namespace std;
int main()
{
int n,s=0,t=0;
cin>>n;
long long a[n+10];
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]>=10&&a[i]<=20)s++;
else t++;
}
cout<<s<<" in"<<endl;
cout<<t<<" out"<<endl;
return 0;
}
719. 连续奇数的和 2
输入 NN 对整数对 X,YX,Y,对于每对 X,YX,Y,请你求出它们之间(不包括 XX 和 YY)的所有奇数的和。
输入格式
第一行输入整数 NN,表示共有 NN 对测试数据。
接下来 NN 行,每行输入一组整数 XX 和 YY。
输出格式
每对 X,YX,Y 输出一个占一行的奇数和。
数据范围
1≤N≤1001≤N≤100,
−1000≤X,Y≤1000−1000≤X,Y≤1000
输入样例:
7
4 5
13 10
6 4
3 3
3 5
3 4
3 8
输出样例:
0
11
5
0
0
0
12
相关代码
#include<iostream>
using namespace std;
int main()
{
int n,x,y;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>y;
if(x>y)swap(x,y);
int s=0;
for(int j=x;j<y;j++)
if(j%2!=0&&j!=x)s=s+j;
cout<<s<<endl;
}
return 0;
}
717. 简单斐波那契
以下数列 0 1 1 2 3 5 8 13 21 ...
被称为斐波纳契数列。
这个数列从第 33 项开始,每一项都等于前两项之和。
输入一个整数 NN,请你输出这个序列的前 NN 项。
输入格式
一个整数 NN。
输出格式
在一行中输出斐波那契数列的前 NN 项,数字之间用空格隔开。
数据范围
0<N<460<N<46
输入样例:
5
输出样例:
0 1 1 2 3
相关代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[10+n];
a[1]=0,a[2]=1;
for(int i=3;i<=n;i++)a[i]=a[i-1]+a[i-2];
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
return 0;
}
722. 数字序列和它的和
输入若干个整数对 M,NM,N,对于每个数对,输出以这两个数为最大值和最小值的公差为 11 的等差数列。
注意,当输入整数对中,任意一个数为 00 或负整数时,立即停止输入,且该组数对无需作任何处理。
输入格式
输入共若干行,每行包含两个整数。
最后一行的两个整数中,至少有一个是非正整数。
输出格式
对于每组需作处理的数对,输出一个结果,每个结果占一行。
结果包含从最小值到最大值的数字序列以及数字序列各数字之和。
具体格式请参照输出样例。
数据范围
M,N≤100M,N≤100
输入样例:
2 5
6 3
5 0
输出样例:
2 3 4 5 Sum=14
3 4 5 6 Sum=18
相关代码
#include<iostream>
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n&&m>0&&n>0)
{
if(m<n)swap(m,n);
int s=0;
for(int i=n;i<=m;i++)
{
cout<<i<<" ";
s=s+i;
}
cout<<"Sum="<<s<<endl;
}
return 0;
}