acm简单题

更新时间:2024-05-30 19:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Run to ACM contest

Description

一年一届的****大学ACM程序设计竞赛又如期进行了。作为ACM的大牛小明同学当然不会错过这次表现自己的机会。大家都知道ACM比赛在中午十二点准时开赛。小明同学11点30在食堂吃完饭,以100m/min的速度步行去赛场,但是走了10分钟后小明一看手表发现已经手表上已经11点55分了(手表坏了。。。),这下小明急了,马上开始跑步,小明跑步的速度是150m/min,小明跑了10分钟后,听到手机在响,原来这是他设置的闹钟,现在才11点50!而距离比赛场地也只有500m的距离了,所以小明又放慢脚步,以50m/min的速度刚好在12点到达比赛场地,开始比赛。现在作为ACM参赛选手的你们,需要你们算出小明同学在时间t1,t2(t1,t2表示在两个时间点,如11:30 11:40表示从11点30到11点40,“:”前后都是整数,且时间在11:30到12:00之间,t1<=t2)之间所运动的距离。

Input

只一行:t1,t2。

Output

只一行:小明在t1,t2时间之间所运动的距离。

Sample Input

11:44 11:55

Sample Output

1150

Hint

11点30到11点40小明运动了1000米,11点40到11点50小明运动了1500米,11点50到12点小明运动了500米

样例中小明11点44到11点50运动了150*6=900米,11点50到11点55运动了50*5=250米,总共运动了1150米

输入可以用scanf(“%d:%d %d:%d”,&a,&b,&c,&d)来处理,不需要字符串输入

标程

#include int main() { int t11,t12,t21,t22,s=0; scanf(\

}

if(t11==12)t12=60; if(t21==12)t22=60;

if(t22<=40)s=100*(t22-t12); else if(t22<=50) { if(t12<=40)s=100*(40-t12)+150*(t22-40); else s=150*(t22-t12); } else { if(t12<=40)s=100*(40-t12)+1500+50*(t22-50); else if(t12<=50)s=150*(50-t12)+50*(t22-50); else s=50*(t22-t12); }

printf(\return 0;

密码翻译

Description

信息时代,信息的安全性至关重要,信息的加密和解密能有效的提高通信的安全性。Carl和justforu在通信是就用到了这种手段,他们在通信过程中对出现的6位正整数,会对其进行加密,然后再发送,另一方接受到以后就对其进行解密,然后得到正确的数字。他们的加密方法有以下特点: 1、将这个整数的每一位数字加一个整数d(0<=d<=9),然后除以10取余. 2、将第一位与第六位交换位置,第二位与第五位交换位置,第三位与第四位交换位置。

注:加密以后出现前缀0,0依然要求输出。如d=5时111115加密后是066666而不是66666;加密以前也可能有前缀0。

现在carl请你帮忙编写一个解码的程序,能够在已知d和接收到的数字a(a是6位正整数,没有前缀0的情况)的情况下得到加密前的数字。

Input

只一行:d,a。

Output

只一行:正确的数字b。

Sample Input

5 124535

Sample Output

080976

Hint

1.原来要发送的080976,经过d=5加密以后就成了124535,也就是收到的是数字,所以输出的数字为原来的080976。

2.对整数a除以10取余操作为:a=a。比如a=12,除以10取余后为a=12=2。

3.字符串和数字可以互换,比如字符’3’和数字3,’3’=3+’0’, 字符’b’=1+’a’; 这是因为字符在ASSIC码中是连续储存的。

标程

#include #include int main() { char a[10]; int d; scanf(\ int i; for(i=5;i>=0;i--) printf(\ printf(\ return 0; }

First blood

Description

Dota在大学男生中已经掀起了一股巨大的热潮,这天,carl和justforu聚在一起玩dota。justforu操作的meepo打野也成了红血,被处在对面的carl发现,carl操作的sevn只要能扔出锤子就能杀死justforu,拿下first blood。但是justforu似乎觉察到了危险,径直往水平泉水方向逃跑,只要他一跑到泉水,他就安全了。现在已知开始时sevn在meepo的正上方,相距d,sevn只要和meepo相距l(lv2)。carl想知道他能否拿下first blood,如果可以的话最少所需要用的时间又是多少?

Input

只一行:d,l,s,v1,v2

Output

只一行:如果不能拿下first blood,输出NO;如果可以,输出所需要用的最少时间(保留三位小数)。

Sample Input

583.818 50.560 672.720 104.966 80.557

Sample Output

7.550

标程

#include #include

int main() { double d,l,s,v1,v2,t; scanf(\ t=(sqrt(4*l*l*v1*v1+4*(v1*v1-v2*v2)*(d*d-l*l))-2*l*v1)/(2*(v1*v1-v2*v2)); if(v2*t

2D桌球

Description

Carl在空余的时候非常喜欢玩2D桌球,但是他常常会无法判断要打的球是否能打进,所以想让各位用计算机帮忙解决。 桌球的各种定义如下:

1、球台是长350cm,宽175cm的矩形,左下角设为坐标原点,球是的半径为2.5cm;

2、球袋分别位于矩形的四个脚上和长的中点上(球袋中心分别在点

A(2.5,2.5),B(175,2.5),C(347.5,2.5),D(2.5,172.5),E(175,172.5),F(347.5,172.5)上);

3、击球后球只会走直线;

4、两球相撞后,被撞球会向相撞时两球圆心连线方向运动; 5、进球的唯一条件是被撞球球心运动线路经过球袋中心; 6、白球和被撞球均不考虑与球台边缘相撞反弹的情况。

现在Carl给你白球,要打球的位置和要进的洞的编号,请你判断Carl是否能进球。

下图是几种能打进和不能打进的情况:

(如图中黑球要向所要方向前进,α必须>90°)

Input

第1行:表示所要进的球袋(A,B,C,D,E,F);

第2行:表示白球和所要进的球的位置,用x0,y0,x,y表示。

Output

对于每组测试数据输出yes或者no表示可以打进或者不能打进。

Sample Input

C

238.0 10.4 63.5 83.5

Sample Output

yes

标程

#include #include #define eps 1e-8

struct point{double x,y;}; struct line{point a,b;};

double distance(point p1,point p2) { return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); }

double xmult(point p1,point p2,point p0) { return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); }

int opposite_side(point p1,point p2,line l) { return xmult(l.a,p1,l.b)*xmult(l.a,p2,l.b)>eps;

}

double disptoline(point p,line l) { return fabs(xmult(p,l.a,l.b))/distance(l.a,l.b); }

int main() { int i,j; char d; point aa,bb,cc; scanf(\ scanf(\ int dd=d-'A'; cc.x=(dd%3)*172.5+2.5; cc.y=(dd/3)*170+2.5; line l; l.a=bb,l.b.x=bb.x-1,l.b.y=(bb.x-cc.x)/(bb.y-cc.y)+bb.y; if(opposite_side(aa,cc,l)&&disptoline(aa,l)-5>eps) printf(\ else printf(\ return 0; }

}

double disptoline(point p,line l) { return fabs(xmult(p,l.a,l.b))/distance(l.a,l.b); }

int main() { int i,j; char d; point aa,bb,cc; scanf(\ scanf(\ int dd=d-'A'; cc.x=(dd%3)*172.5+2.5; cc.y=(dd/3)*170+2.5; line l; l.a=bb,l.b.x=bb.x-1,l.b.y=(bb.x-cc.x)/(bb.y-cc.y)+bb.y; if(opposite_side(aa,cc,l)&&disptoline(aa,l)-5>eps) printf(\ else printf(\ return 0; }

本文来源:https://www.bwwdw.com/article/s9z6.html

Top