2013夏休みACM合宿_12級週間試合3

44989 ワード

A
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=36#problem/A
2つの誕生日を入力して、誰が年齢が大きいかを判断して、水題

 1 #include<stdio.h>

 2 int main()

 3 {

 4     int n,i,a,b,c,x,y,z;

 5     while(scanf("%d",&n)!=EOF)

 6     {

 7         for(i=1;i<=n;i++)

 8         {

 9             scanf("%d %d %d %d %d %d",&a,&b,&c,&x,&y,&z);

10             if(a>x)

11             printf("cpcs
"); 12 else if(a<x) 13 printf("javaman
"); 14 else if(a==x) 15 { 16 if(b>y) 17 { 18 printf("cpcs
"); 19 } 20 else if(b<y) 21 printf("javaman
"); 22 else if(b==y) 23 { 24 if(c>z) 25 printf("cpcs
"); 26 else if(c<z) 27 printf("javaman
"); 28 else if(c==z) 29 printf("same
"); 30 } 31 } 32 } 33 } 34 return 0; 35 }

View Code
 
B
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=36#problem/B
年を入力して、その年の干支を求めて、年を探して、循環して求めればいいです.
注意範囲は-99999------+9999西暦0年は存在しない(試合時はこれでずっとWA).

  1 #include<stdio.h>

  2 int main()

  3 {

  4     int a[10002],b[10002],c[10002],d[10002],i,n,x,y,m;

  5         x=7;y=-9;

  6         for(i=1;i<=9999;i++)

  7         {

  8             c[i]=x;

  9             d[i]=y;

 10             x--;

 11             y++;

 12             if(x<1)

 13             x=10;

 14             if(y>-1)

 15             y=-12;

 16         }

 17         x=8;y=-10;

 18         for(i=1;i<=9999;i++)

 19         {

 20             a[i]=x;

 21             b[i]=y;

 22             x++;

 23             y--;

 24             if(x>10)

 25             x=1;

 26             if(y<-12)

 27             y=-1;

 28         }

 29     while(scanf("%d",&n)!=EOF)

 30     {

 31         for(i=1;i<=n;i++)

 32         {

 33             scanf("%d",&m);

 34             if(m>=0)

 35             {

 36                 if(a[m]==1)

 37             printf("Jia");

 38             else if(a[m]==2)

 39             printf("Yi");

 40              else if(a[m]==3)

 41             printf("Bing");

 42              else if(a[m]==4)

 43             printf("Ding");

 44              else if(a[m]==5)

 45             printf("Wu");

 46              else if(a[m]==6)

 47             printf("Ji");

 48              else if(a[m]==7)

 49             printf("Geng");

 50              else if(a[m]==8)

 51             printf("Xin");

 52              else if(a[m]==9)

 53             printf("Ren");

 54              else if(a[m]==10)

 55             printf("Gui");

 56             if(b[m]==-1)

 57             printf("zi
"); 58 if(b[m]==-2) 59 printf("chou
"); 60 if(b[m]==-3) 61 printf("yin
"); 62 if(b[m]==-4) 63 printf("mao
"); 64 if(b[m]==-5) 65 printf("chen
"); 66 if(b[m]==-6) 67 printf("si
"); 68 if(b[m]==-7) 69 printf("wu
"); 70 if(b[m]==-8) 71 printf("wei
"); 72 if(b[m]==-9) 73 printf("shen
"); 74 if(b[m]==-10) 75 printf("you
"); 76 if(b[m]==-11) 77 printf("xu
"); 78 if(b[m]==-12) 79 printf("hai
"); 80 } 81 else if(m<0) 82 { 83 m=-m; 84 if(c[m]==1) 85 printf("Jia"); 86 else if(c[m]==2) 87 printf("Yi"); 88 else if(c[m]==3) 89 printf("Bing"); 90 else if(c[m]==4) 91 printf("Ding"); 92 else if(c[m]==5) 93 printf("Wu"); 94 else if(c[m]==6) 95 printf("Ji"); 96 else if(c[m]==7) 97 printf("Geng"); 98 else if(c[m]==8) 99 printf("Xin"); 100 else if(c[m]==9) 101 printf("Ren"); 102 else if(c[m]==10) 103 printf("Gui"); 104 if(d[m]==-1) 105 printf("zi
"); 106 if(d[m]==-2) 107 printf("chou
"); 108 if(d[m]==-3) 109 printf("yin
"); 110 if(d[m]==-4) 111 printf("mao
"); 112 if(d[m]==-5) 113 printf("chen
"); 114 if(d[m]==-6) 115 printf("si
"); 116 if(d[m]==-7) 117 printf("wu
"); 118 if(d[m]==-8) 119 printf("wei
"); 120 if(d[m]==-9) 121 printf("shen
"); 122 if(d[m]==-10) 123 printf("you
"); 124 if(d[m]==-11) 125 printf("xu
"); 126 if(d[m]==-12) 127 printf("hai
"); 128 } 129 } 130 } 131 return 0; 132 }

View Code
 
C
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=36#problem/C
2つのタクシーの料金プランを提供し、2つ目が1つ目の料金よりどれだけ高いかを求めます.費用が小数点以下になったので、二つの案を先に四捨五入して減算することに注意してください.

 1 #include<stdio.h>

 2 #include<string.h>

 3 #include<stdlib.h>

 4 int main()

 5 {

 6      int n;

 7      scanf("%d", &n);

 8      while(n--)

 9      {

10         int d,time;

11         scanf("%d %d",&d,&time);

12 

13         double m1=10.0,m2=11.0;

14         if(d>=3)

15         {

16             if(d>=10)

17             {

18                 m1+=(14.0+(d-10)*3*1.0);

19                 m2+=(17.5+(d-10)*3.75);

20             }

21             else

22             {

23                 m1+=((d-3)*2.0) ;

24                 m2+=((d-3)*2.5);

25             }

26         }

27                 m1+=(1+time*0.4);

28                 m2+=((time*2.5)/4);

29 

30                 int x=m1;

31                 if(m1-x>=0.5)

32                 x+=1;

33                 int y=m2;

34                 if(m2-y>=0.5)

35                 y+=1;

36                 printf("%d
",y-x); 37 } 38 return 0; 39 }

View Code
 
D
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=36#problem/D
石のハサミの布の問題、法則を探して中間のあの文字列を入力して出力する結果です.

 1 #include <stdio.h>

 2 #include<string.h>

 3 #include<stdlib.h>

 4 

 5 int main()

 6 {

 7     char a[25],b[25],c[25];

 8     int n,i;

 9     while(scanf("%d",&n)!=EOF)

10     {

11        

12         for(i=1;i<=n;i++)

13     { 

14          memset(a,0,sizeof(a));

15          memset(b,0,sizeof(b));

16          memset(c,0,sizeof(c));

17         scanf("%s%s%s",a,b,c);

18         printf("%s will survive
",b); 19 } 20 } 21 return 0; 22 }

View Code
 
E
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=36#problem/E
3つの数を入力して、後の2つの数のどの数と第1の数の差が最も小さいかを判断して、出力AあるいはB

 1 #include<stdio.h>

 2 #include<math.h>

 3 #include<stdlib.h>

 4 int main()

 5 {

 6     int n,i,a,m,b;

 7     while(scanf("%d",&n)!=EOF)

 8     {

 9         for(i=1;i<=n;i++)

10         {

11             scanf("%d %d %d",&m,&a,&b);

12             if(abs(m-a)<abs(m-b))

13             printf("A
"); 14 else 15 printf("B
"); 16 } 17 } 18 return 0; 19 }

View Code
 
F
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=36#problem/F
 
G
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=36#problem/G