程序设计基础内蒙古师范大学OJ题.docx
《程序设计基础内蒙古师范大学OJ题.docx》由会员分享,可在线阅读,更多相关《程序设计基础内蒙古师范大学OJ题.docx(51页珍藏版)》请在冰豆网上搜索。
![程序设计基础内蒙古师范大学OJ题.docx](https://file1.bdocx.com/fileroot1/2023-1/26/ff77d8d2-fa76-4afc-9a00-70b8dd0655b1/ff77d8d2-fa76-4afc-9a00-70b8dd0655b11.gif)
程序设计基础内蒙古师范大学OJ题
十进制到六进制(1435)
Description
进制转换:
将十进制(不超过int类型表示的范围)的数转换为六进制的数。
Input
输入为第一行是组数n,后面n行是需要进制转换的十进制数。
Output
进制转换后的n行六进制数。
SampleInput
3
13
46
265
SampleOutput
21
114
1121
1/55
Source
#include
intmain()
{
inta,b[1000],i,j,n,m;
while(scanf("%d",&n)!
=EOF)
{
while(n--)
{
scanf("%d",&a);
for(i=0;a>0;i++)
{
b[i]=a%6;
a=a/6;
}
for(j=i-1;j>=0;j--)
printf("%d",b[j]);
printf("\n");
}
}
return0;
}
2/55
母牛的故事(1128)
TimeLimit:
100MSMemoryLimit:
65536K
TotalSubmit:
4414Accepted:
1688
Description
有一头母牛,它每年年初生一头小母牛。
每头小母牛从第四个年头开始,每年年初也生一头小母牛。
请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n≤55),
n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
SampleInput
2
4
5
0
SampleOutput
2
4
6
3/55
#include
intmain()
{
inta[100],i,n;
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=4;
for(i=5;i<=55;i++)
a[i]=a[i-1]+a[i-3];
while(scanf("%d",&n)!
=EOF)
{
if(n==0)
break;
printf("%d\n",a[n]);
}
return0;
}
4/55
评委会打分(1607)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
1663Accepted:
683
Description
青年歌手大奖赛中,评委会给参赛选手打分。
选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n,n大于2且小于等于100,表示评委的人数,然后是n个评委的打分,分数都是整数。
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
SampleInput
3999897
4100999897
SampleOutput
98.00
98.50
5/55
#include
intmain()
{
doublea[100],n,max,min,ave;
inti;
while(scanf("%lf",&n)!
=EOF)
{
for(i=0;iscanf("%lf",&a[i]);
max=a[0];
min=a[0];
ave=a[0];
for(i=1;i{
if(a[i]>max)
max=a[i];
if(a[i]min=a[i];
ave=ave+a[i];
}
ave=ave-max-min;
n=n-2;
printf("%.2lf\n",ave/n);
}return0;
}
6/55
陶陶摘苹果(1263)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
2869Accepted:
1783
Description
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。
苹果成熟的
时候,陶陶就会跑去摘苹果。
陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高
度,请帮陶陶算一下她能够摘到的苹果的数目。
假设她碰到苹果,苹果就会掉下来。
Input
输入用例包括两行数据。
第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。
第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
Output
输出结果包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。
SampleInput
100200150140129134167198200111
110
SampleOutput
5
7/55
#include
intmain()
{
inta[11],n,i,j=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<10;i++)
{
if(a[i]<=n+30)
j++;
}
printf("%d",j);
return0;
}
8/55
矩阵(1890)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
375Accepted:
172
Description
我们把N*N矩阵左上角的第一个元素a[1][1]定义为第一层,
把a[1][2],a[2][1],a[2][2]定义为第二层,依次,第三层,第四层...直到第N层。
每一层的数字都相同而且数值上等于层数。
现在给定一个正整数n,(1<=n<=1000),输出对应矩阵每一组输出之后再输出一个空行
Input
1
2
5
Output
1
12
22
12345
22345
33345
44445
55555
SampleInput
n
SampleOutput
9/55
输出对应的n*n阶矩阵
Hint
123456
223456
333456
444456
555556
666666
#include
intmain()
{
inti,n,k,l;
while(scanf("%d",&n)!
=EOF)
{
for(i=1;i<=n;i++)
{
for(k=1;k<=i;k++)
printf("%d",i);
for(l=i+1;l<=n;l++)
printf("%d",l);
printf("\n");
}
printf("\n");
}
return0;
}
10/55
逆序数字(1282)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
2904Accepted:
1559
Description
编写一个函数,接收一个整数值,返回这个数中数字逆序后的结果值。
例如,给定数7631,函数返回1367.
Input
第一行一个正整数T(T<=10),表示有T组测试数据;以下T行,每行一个非负的整数N。
Output
共T行,对于每组输入数据输出一行,即数字逆序后的结果值。
SampleInput
3
7631
101
51
SampleOutput
1367
101
15
11/55
#include
#include
intmain()
{
intn,i,j,t;
chara[100];
while(scanf("%d",&t)!
=EOF)
{
for(i=1;i<=t;i++)
{
scanf("%s",a);
getchar();
n=strlen(a);
for(j=n-1;j>=0;j--)
printf("%c",a[j]);
printf("\n");
}
}
}
12/55
打印菱形(1895)
Description
用*打印对应边长的空心菱形具体如样例
Input
菱形边长n,n<=100
Output
对应菱形
每组输出之后再输出空行
SampleInput
3
5
SampleOutput
*
**
**
**
*
*
**
**
**
**
**
**
**
*
13/55
#include
intmain()
{
intn,i,j;
while(scanf("%d",&n)!
=EOF)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf("");
for(j=1;j<=i;)
{
printf("*");
j=j+i;
}
for(j=n-i+4;j<=n+i;j=j+1)
printf("");
if(i>1)
printf("*");
printf("\n");
}
for(i=n-1;i>=1;i--)
{
for(j=1;j<=n-i;j++)
printf("");
for(j=1;j<=i;)
{
printf("*");
j=j+i;
}
for(j=n-i+4;j<=n+i;j=j+1)
printf("");
if(i>1)
printf("*");
printf("\n");
}
printf("\n");
}
return0;
}
14/55
收入统计(1141)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
2110Accepted:
949
Description
一个马戏团来呼和浩特演出,n个座位全部坐满,全部门票收入是120元,现在知道,男人每人5元,女人每人2元,小孩每人1角。
现在请您编程帮助马戏团经理统计一下,n个座位中男人、女人和小孩的数目。
Input
由键盘输入至少一组测试数据,并且每一组测试数据是由整数n单独构成的一
行,n表示输入的总人数。
Output
对每一组测试数据,输出满足要求的男人、女人和小孩人数的全部方案(每种方案各占一行,人数间用英文状态下的逗号分隔)。
若n人无法满足条件,则输出"Nooutput"(双引号内的部分为输出部分)。
SampleInput
60
SampleOutput
0,60,0
19,11,30
15/55
#include"stdio.h"
intmain()
{
intn,m,s,i,p,b;doublea;
while(scanf("%d",&n)!
=-1)
{p=0;
for(i=0;i<=24;i++)
{
for(s=0;s<=n;s++)
{
a=(double)n-i-s;
if(120==a/10+s*2+i*5)
{
printf("%d,%d,%.0lf\n",i,s,a);p=1;
}
}
}
if(p==0){puts("Nooutput");}
}
return0;
}
16/55
九九乘法表(1892)
Description
小时候学过的九九乘法表也许将会扎根于我们一生的记忆,现在让我们重温那些温暖的记忆,请编程输出九九乘法表.
Input
第一有一个整数N,表示有N组数据(N<10)接下来由N行,每行只有一个整
数M(1<=M<=9);
Output
对应每个整数M,根据要求输出乘法表的前N行,具体格式参见输入输出样例和上图.每两组测试数据结果之间有一个空行隔开,具体如输出样例。
SampleInput
3
2
1
5
SampleOutput
1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=92*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18
1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9
1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=92*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=183*3=93*4=123*5=153*6=183*7=213*8=243*9=274*4=164*5=204*6=244*7=284*8=324*9=365*5=255*6=305*7=355*8=405*9=45
17/55
#include
intmain()
{
inta,b,c,d,i,j;
while(scanf("%d",&a)!
=EOF)
{
while(a--)
{
scanf("%d",&b);
for(i=1;i<=b;i++)
{
for(j=i;j<=9;j++)
printf("%d*%d=%d",i,j,i*j);
printf("\n");
}
printf("\n");
}
}
}
18/55
制作数字三角形(1422)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
1212Accepted:
802
Description
现在要用一组连续的数字,制作出一个近似倒直角三角形的形状,并用A表示
开始的数字,B表示高度。
Input
第一行有两个正整数A,B(A,B均小于10)。
Output
输出对应的数字三角形,每个数字之间空1个空格。
SampleInput
73
24
SampleOutput
789
1011
12
2345
678
910
11
19/55
#include
intmain()
{
inti,b,a,j;
while(scanf("%d%d",&a,&b)!
=EOF)
{
for(i=b;i>=1;i--)
{
for(j=1;j<=i;j++)
{
printf("%d",a);
a++;
}
printf("\n");
}
}
}
20/55
求素数的和(2011)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
845Accepted:
319
Description
求m-n范围内所有素数的和(1<=m<=n<1000)
Input
输入多组数据,每组中有两个整数m,n(1<=m<=n<1000)
Output
输出数据为一个整数,每个结果对应一行。
SampleInput
29
100500
SampleOutput
17
20476
21/55
#include
intmain()
{
inti,m,n,j,s;
while(scanf("%d%d",&m,&n)!
=EOF)
{
for(s=0,i=m;i<=n;i++)
{
for(j=2;j*j<=i;j++)
{
if(i%j==0)
break;
}
if(j*j>i)
s=s+i;
}
if(m==1)
printf("%d\n",s-1);
else
printf("%d\n",s);
}
}
22/55
最大公约数(初级)(1410)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
3561Accepted:
1834
Description
给定两个正整数,求它们的最大公约数。
Input
有多组数据,每行为两个正整数,且不超过int可以表示的范围。
Output
行对应输出最大公约数。
SampleInput
48
86
200300
SampleOutput
4
2
100
23/55
#include
intmain()
{
inti,m,n,x;
while(scanf("%d%d",&m,&n)!
=EOF)
{
if(m>n)
x=n;
if(mx=m;
for(i=x;i>=1;i--)
{
if(n%i==0&&m%i==0)
break;
}
printf("%d\n",i);
}
}
24/55
最小公倍数(初级)(1411)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
3144Accepted:
1847
Description
给定两个正整数,求它们的最小公倍数。
Input
有多组数据,每行为两个正整数,且不超过int可以表示的范围。
Output
每行对应输出最小公倍数。
SampleInput
1121
2535
4454
SampleOutput
231
175
1188
25/55
#include
intmain()
{
inti,m,n,x;
while(scanf("%d%d",&m,&n)!
=EOF)
{
if(mx=n;
else
x=m;
for(i=x;i<=n*m;i++)
if(i%n==0&&i%m==0)
break;
printf("%d\n",i);
}
return0;
}
26/55
平方和与立方和(1457)
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
2930Accepted:
794
Description
给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
Input
输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。
Output
对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
你可以认为32位整数足以保存结果。
SampleInput
13
25
SampleOutput
428
20152
27/55
#include
intmain()
{
inti,x,y,m,n,s,sum;
while(scanf("%d%d",&m,&n)!
=EOF)
{
if(m>n)
{
x=n;
y=m;
}
if(m{
x=m;
y=n;
}
for(i=x,s=0,sum=0;i<=y;i++)
{
if(i%2==0)
s=s+i*i;
else
sum=sum+i*i*i;
}
printf("%d%d\n",s,sum);
}
return0;
}
28/55
斐波那契数列皇子会说话(2064)
Description
从前,有一个斐波那契数列皇子,
皇子啊!
!
!
他与别的斐波那契数列不同,他长这样:
F(0)=7,F
(1)=11,F(n)=F(n-1)+F(n-2)(n>=2).
对于任意整数n,当满足F(n)能被3整除是,皇子会大喊:
yes,不然他就会喊:
no
Input
Inputconsistsofasequenceoflines,eachcontaininganintegern.(n<1,000,000).
Output
Printtheword"yes"if3divideevenlyintoF(n).
Printtheword"no"ifnot.
SampleInput
0
1
2
3
4
5
SampleOutput
no
no
yes
no
no
29/55
no
#include
intmain()
{
intn;
while(scanf("%d",&n)!
=EOF)
if(n!
=0&&n%8==2||n!
=0&&n%8==6)
printf("yes\n");
else
printf("no\n");
}
30/55
求素数(1204)
TimeLimit:
1000MSMemoryLimit: