杭电ACM.docx

上传人:b****5 文档编号:3575660 上传时间:2022-11-24 格式:DOCX 页数:32 大小:21.67KB
下载 相关 举报
杭电ACM.docx_第1页
第1页 / 共32页
杭电ACM.docx_第2页
第2页 / 共32页
杭电ACM.docx_第3页
第3页 / 共32页
杭电ACM.docx_第4页
第4页 / 共32页
杭电ACM.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

杭电ACM.docx

《杭电ACM.docx》由会员分享,可在线阅读,更多相关《杭电ACM.docx(32页珍藏版)》请在冰豆网上搜索。

杭电ACM.docx

杭电ACM

1.

ProblemDescription

输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

Input

输入数据有多组,每组占一行,有三个字符组成,之间无空格。

Output

对于每组输入数据,输出一行,字符中间用一个空格分开。

SampleInput

qwe

asd

zxc

SampleOutput

eqw

ads

cxz

方案:

#include

intmain()

{

charstr[4],t;

while(scanf("%s",&str)!

=EOF)

{

for(inti=0;i<2;i++)

{

if(str[i]>str[i+1])

{

t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

if(str[0]>str[2])

{

t=str[0];

str[0]=str[2];

str[2]=t;

}

}

printf("%c%c%c\n",str[0],str[1],str[2]);

}

}

2.

ProblemDescription

输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。

Input

输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。

Output

对于每组输入数据,输出一行,结果保留两位小数。

SampleInput

0001

0110

SampleOutput

1.00

1.41

答案:

#include

#include

voidmain()

{

doublea,b,c,d;

doublee;

while(scanf("%lf%lf%lf%lf",&a,&b,&c,&d)!

=EOF)

{

e=sqrt((d-b)*(d-b)+(c-a)*(c-a));

printf("%.2lf\n",e);

}

}

3.

ProblemDescription

根据输入的半径值,计算球的体积。

Input

输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。

Output

输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。

SampleInput

1

1.5

SampleOutput

4.189

14.137

Hint

#definePI3.1415927

答案:

#include

#definePI3.1415927

voidmain()

{

doublei;

doublej;

while(scanf("%lf",&i)!

=EOF)

{

j=(4.0/3.0)*PI*i*i*i;

printf("%.3lf\n",j);

}

}

4.

ProblemDescription

求实数的绝对值。

Input

输入数据有多组,每组占一行,每行包含一个实数。

Output

对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。

SampleInput

123

-234.00

SampleOutput

123.00

234.00

答案:

#include

#include

voidmain()

{

doublei,j;

while(scanf("%lf",&i)!

=EOF)

{

j=sqrt(i*i);

printf("%.2lf\n",j);

}

}

5.

ProblemDescription

输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:

90~100为A;

80~89为B;

70~79为C;

60~69为D;

0~59为E;

Input

输入数据有多组,每组占一行,由一个整数组成。

Output

对于每组输入数据,输出一行。

如果输入数据不在0~100范围内,请输出一行:

“Scoreiserror!

”。

SampleInput

56

67

100

123

SampleOutput

E

D

A

Scoreiserror!

答案:

#include

voidmain()

{

inti;

while(scanf("%d",&i)!

=EOF)

{

chargrade;

if(i>0&&i<60)

grade='E';

elseif(i>=60&&i<70)

grade='D';

elseif(i>=70&&i<80)

grade='C';

elseif(i>=80&&i<90)

grade='B';

elseif(i>=90&&i<=100)

grade='A';

else

grade='F';

switch(grade)

{

case'E':

printf("E\n");break;

case'D':

printf("D\n");break;

case'C':

printf("C\n");break;

case'B':

printf("B\n");break;

case'A':

printf("A\n");break;

default:

printf("Scoreiserror!

\n");

}

}

}

6.

ProblemDescription

给定一个日期,输出这个日期是该年的第几天。

Input

输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sampleinput,另外,可以向你确保所有的输入数据是合法的。

Output

对于每组输入数据,输出一行,表示该日期是该年的第几天。

SampleInput

1985/1/20

2006/3/12

SampleOutput

20

71

答案:

#include

voidmain()

{

inta,b,c;

while(scanf("%d/%d/%d",&a,&b,&c)!

=EOF)

{

intdata1,data2,data3,data;

if((a%4!

=0)||(a%400!

=0)&&(a%100==0))

{

if(b>2&&b<=12)

{

if(b<5)

{

data1=31*(b/2);

data2=0;

data3=28;

data=data1+data2+data3+c;

printf("%d\n",data);

}

elseif(b<7)

{

data1=31*(b/2);

data2=30;

data3=28;

data=data1+data2+data3+c;

printf("%d\n",data);

}

elseif(b<10)

{

data1=31*(b/2);

data2=30*2;

data3=28;

data=data1+data2+data3+c;

printf("%d\n",data);

}

elseif(b<12)

{

data1=31*(b/2);

data2=30*3;

data3=28;

data=data1+data2+data3+c;

printf("%d\n",data);

}

else

{

data1=31*(b/2);

data2=30*4;

data3=28;

data=data1+data2+data3+c;

printf("%d\n",data);

}

}

elseif(b>0&&b<=2)

{

if(b==1)

{

data=c;

printf("%d\n",data);

}

else

{

data=31+c;

printf("%d\n",data);

}

}

}

elseif((a%400==0)||(a%4==0)&&(a%100!

=0))

{

if(b>2&&b<=12)

{

if(b<5)

{

data1=31*(b/2);

data2=0;

data3=29;

data=data1+data2+data3+c;

printf("%d\n",data);

}

elseif(b<7)

{

data1=31*(b/2);

data2=30;

data3=29;

data=data1+data2+data3+c;

printf("%d\n",data);

}

elseif(b<10)

{

data1=31*(b/2);

data2=30*2;

data3=29;

data=data1+data2+data3+c;

printf("%d\n",data);

}

elseif(b<12)

{

data1=31*(b/2);

data2=30*3;

data3=29;

data=data1+data2+data3+c;

printf("%d\n",data);

}

else

{

data1=31*(b/2);

data2=30*4;

data3=29;

data=data1+data2+data3+c;

printf("%d\n",data);

}

}

elseif(b>0&&b<=2)

{

if(b==1)

{

data=c;

printf("%d\n",data);

}

else

{

data=31+c;

printf("%d\n",data);

}

}

}

}

}

7.

ProblemDescription

给你n个整数,求他们中所有奇数的乘积。

Input

输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。

Output

输出每组数中的所有奇数的乘积,对于测试实例,输出一行。

SampleInput

3123

42345

SampleOutput

3

15

答案:

#include

intmain()

{

intn,t,result;

while(scanf("%d",&n)!

=EOF)

{

inti;

result=1;

for(i=0;i

{

scanf("%d",&t);

if((t&1)==1)

result*=t;

}

printf("%d\n",result);

}

return0;

}

8.

ProblemDescription

给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。

Input

输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。

Output

对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。

你可以认为32位整数足以保存结果。

SampleInput

13

25

SampleOutput

428

20152

答案:

#include

voidmain()

{

longa,b,m,n;

while(scanf("%d%d",&a,&b)!

=EOF)

{

m=0;

n=0;

if(a>b)

{

longt;

t=a;

a=b;

b=t;

}

for(a;a<=b;a++)

{

if(a%2==0)

{

m+=a*a;

}

else

{

n+=a*a*a;

}

}

printf("%d%d\n",m,n);

}

}

9.

ProblemDescription

统计给定的n个数中,负数、零和正数的个数。

Input

输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。

Output

对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。

SampleInput

60123-10

512340.5

0

SampleOutput

123

005

答案“:

#include

intmain()

{

intn,a,b,c,i;

doublem;

while(scanf("%d",&n)!

=EOF)

{

a=b=c=0;

if(n!

=0)

{

for(i=0;i

{

scanf("%lf",&m);

if(m<0)

a++;

elseif(m==0)

b++;

elseif(m>0)

c++;

}

}

else

break;

printf("%d%d%d\n",a,b,c);

}

}

10.

ProblemDescription

数列的定义如下:

数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

Input

输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。

Output

对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。

SampleInput

814

22

SampleOutput

94.73

3.41

答案:

#include

#include

intmain()

{

doublen;

intm;

while(scanf("%lf",&n)!

=EOF)

{

inti;

doublea=n,j=0;

scanf("%d",&m);

for(i=1;i

{

j=sqrt(n);

a+=j;

n=j;

}

printf("%.2lf\n",a);

}

return0;

}

11.

ProblemDescription

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:

“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:

153=1^3+5^3+3^3。

现在要求输出所有在m和n范围内的水仙花数。

Input

输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。

Output

对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;

如果给定的范围内不存在水仙花数,则输出no;

每个测试实例的输出占一行。

SampleInput

100120

300380

SampleOutput

no

370371

答案:

#include

intmain()

{

intm,n,a,b,c,d;

while(scanf("%d%d",&m,&n)!

=EOF)

{

d=0;//每次输入要初始化个数。

while(m<=n)

{

a=m%10;

b=(m%100)/10;

c=m/100;

if(a*a*a+b*b*b+c*c*c==m)

{

if(d==0)

printf("%d",m);

else

printf("%d",m);

d++;

}

m++;

}

if(d==0)

printf("no\n");

else

printf("\n");

}

return0;

}

12.

ProblemDescription

多项式的描述如下:

1-1/2+1/3-1/4+1/5-1/6+...

现在请你求出该多项式的前n项的和。

Input

输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。

Output

对于每个测试实例n,要求输出多项式前n项的和。

每个测试实例的输出占一行,结果保留2位小数。

SampleInput

2

12

SampleOutput

1.00

0.50

答案:

#include

intmain()

{

intn,m,i;

doublea[1000],j;

a[1]=1;

for(i=2;i<1000;i++)

{

j=1.0/i;

if(i%2!

=1)

a[i]=a[i-1]-j;

else

a[i]=a[i-1]+j;

}

while(scanf("%d",&n)!

=EOF)

{

while(n--)

{

scanf("%d",&m);

printf("%.2f\n",a[m]);

}

}

return0;

}

13.

ProblemDescription

对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x

Input

输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。

Output

对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。

SampleInput

01

00

SampleOutput

OK

答案:

#include

intmain(void)

{

intx,y,i,j,k,sum,t;

while(scanf("%d%d",&x,&y)!

=EOF)

{

sum=0;

if(x==0&&y==0)

break;

else

{

for(i=x;i<=y;i++)

{

t=i*i+i+41;

k=1;

for(j=2;j*j<=t;j++)

{

if(t%j==0)

{

k=0;

break;

}

}

if(k)

sum++;

}

if(sum==y-x+1)

printf("OK\n");

else

printf("Sorry\n");

}

}

return0;

}

14.

ProblemDescription

喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:

悟空是在研究一个数学问题!

什么问题?

他研究的问题是蟠桃一共有多少个!

不过,到最后,他还是没能解决这个难题,呵呵^-^

当时的情况是这样的:

第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。

聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?

Input

输入数据有多组,每组占一行,包含一个正整数n(1

Output

对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。

SampleInput

2

4

SampleOutput

4

22

答案:

#include

#include

intmain(void)

{

intn;

while(scanf("%d",&n)!

=EOF)

printf("%.0f\n",3*pow(2,n-1)-2);

return0;

}

15.

ProblemDescription

青年歌手大奖赛中,评委会给参赛选手打分。

选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。

Input

输入数据有多组,每组占一行,每行的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1