请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6922|回复: 13

一道简单的ACM题,不过做了很久不知道为什么会是wrong answer,跪求解释啊

[复制链接]
字体大小: 正常 放大
Hundred        

1

主题

10

听众

29

积分

  • TA的每日心情
    开心
    2014-11-26 16:04
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    升级  25.26%

    自我介绍
    ha
    发表于 2014-2-19 18:00 |显示全部楼层
    |招呼Ta 关注Ta
    [size=+2]Maya Calendar 7 n1 B/ q9 R- S6 @% Y
    During his last sabbatical, professor M. A. Ya made a surprising discovery about the old Maya calendar. From an old knotted message, professor discovered that the Maya civilization used a 365 day long year, called Haab, which had 19 months. Each of the first 18 months was 20 days long, and the names of the months were pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu. Instead of having names, the days of the months were denoted by numbers starting from 0 to 19. The last month of Haab was called uayet and had 5 days denoted by numbers 0, 1, 2, 3, 4. The Maya believed that this month was unlucky, the court of justice was not in session, the trade stopped, people did not even sweep the floor. For religious purposes, the Maya used another calendar in which the year was called Tzolkin (holly year). The year was divided into thirteen periods, each 20 days long. Each day was denoted by a pair consisting of a number and the name of the day. They used 20 names: imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau and 13 numbers; both in cycles. ; y+ X. ?. p, r" e$ \
    Notice that each day has an unambiguous description. For example, at the beginning of the year the days were described as follows:
    3 l/ ?9 N7 f9 i& w. |1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, and again in the next period 8 imix, 9 ik, 10 akbal . . .
    / B, t; w& p$ MYears (both Haab and Tzolkin) were denoted by numbers 0, 1, ... , where the number 0 was the beginning of the world. Thus, the first day was: 5 U1 k& E, p) u0 ~. B% C: k- F; J4 `
    Haab: 0. pop 0
    ( U$ e' `. Z& k( ^/ i  o) [Tzolkin: 1 imix 0 Help professor M. A. Ya and write a program for him to convert the dates from the Haab calendar to the Tzolkin calendar. ' p8 a% M( q- X" W  l  W( l
    InputThe date in Haab is given in the following format:NumberOfTheDay. Month Year
    ! o0 A% e8 _6 S# E: ^. w& }The first line of the input contains the number of the input dates in the input. The next n lines contain n dates in the Haab calendar format, each in separate line. The year is smaller then 5000. 4 K7 |$ S* m) s# N* W1 i
    OutputThe date in Tzolkin should be in the following format:Number NameOfTheDay Year
    7 ^0 Z9 b& ~/ N# G1 J" z' @) jThe first line of the output contains the number of the output dates. In the next n lines, there are dates in the Tzolkin calendar format, in the order corresponding to the input dates.
    6 r- _& v* q% b6 U  @" n' ~% f" e5 l6 j, t
    Sample Input310. zac 00. pop 010. zac 1995Sample Output33 chuen 01 imix 09 cimi 2801
    ; |' O/ [! Y3 ^2 S% P+ j7 M/ c) F1 o! S8 w1 u
    下面是我的代码,虽然繁琐点/ R. v, I1 r8 j) Z8 o1 E, x2 Z3 o
    #include <stdio.h>
    5 p- g  W4 u: f7 U6 S( h8 M#include <string.h>1 l- {, i2 ?% c$ P1 l$ C
    void main()% W: c  [& `- ]0 E" g* |: s
    {
    7 A& Q1 e" `) c2 i        int n;//用于记数
    8 m5 x& }. ?! b4 v% w9 Z        scanf("%d",&n);
    " i7 S/ h9 c8 [. m, e& w. O        printf("%d\n",n);. C, c: o0 e' F/ U. K
    7 d3 S9 X4 R! H9 Y/ o3 K1 j6 \
            while(n--)# p: Q2 }5 `  f
            {
    3 M" i; ?% U- A8 ~) I/ D9 X. s1 ^        //定义Haab 的年月日# c- }% |2 O% {  W" u6 }. m; c5 l
                    int  day,year;  
    , u6 G4 f  h0 S+ F* E& U) S+ H                char month[10];
    0 C1 J2 ]1 E6 z! D9 r. B7 U2 H            //总共天数
    , Z0 j6 l) p4 _' ?- k                int number;, Y( f) a9 z0 F) F
    5 n2 R1 F+ m, F+ |! S) R+ d. r
                int i=0;/ h0 @6 F7 @! ]) a* v: Y! Y
    6 h% S% Y2 Q: x# `
                //接收到Haab 的年月日0 d) R1 ]2 R& p/ O  s2 J; ]
                    scanf("%d",&day);       
    , L0 ]( m3 t6 l9 r- c- R& s4 H        while(1)  v- Q( [* V3 H4 ~5 y5 Q
                    {
    1 Q. C& q4 F9 w' R                        scanf("%c",&month);8 D: k5 W5 Z$ F- n3 N6 q
                            if (month>=97&&month<=122)
    / X& C& |0 ]2 F& W! i5 Z                                break;9 r2 i, Z6 R* v, l
                    }
    6 o; a' q1 |( u. u- |                while(month>=97&&month<=122)- m9 m; D1 n8 y5 Z* P9 n+ k" t
                    {
    ' v& e$ }6 t7 X. }                        i++;9 Y2 A4 w- m- ], O+ F, n6 r0 J. t
                            scanf("%c",&month);        ; k( E6 Z" v0 Z6 W7 \$ I3 X
                    }
    2 O8 a% M8 r  ^8 G  ?0 g  K7 p* Z& S            scanf("%d",&year);% Y* A8 f' y  a) ~5 i4 u

    - r: L. k+ }$ t            //方便后面的比较  h/ X. U& R- H3 ]/ m( c* l2 H
                    for(i=0;i<10;i++)
    $ |0 Z4 ~4 m7 l+ J8 i                {
    9 T8 v$ Y: E5 u8 J. K4 m" V2 x                        if(month<97||month>122)$ K0 I  a5 `2 e$ X. c* Z$ x0 N  t* [
                            {
    8 p+ n3 @0 M; h2 g* ~$ F7 J: K                                month='\0';
    + u/ z) o# Y* K) d" q( ?; p1 f- ^                                i++;! h+ E' a* x: R: `
                            }
    . z% t! l. E9 y0 s                }" ~7 r  `. k( x
                   
    % B. m! j+ P% `8 b+ p3 ]3 C                //定义Haab的月份(英文)9 ]- E5 ~, S- b: f; \: L
                    char        month1[10]="pop";) y7 C+ F8 V; H0 y; V
                    char    month2[10]="no";
    " c2 R8 h/ R  K+ }                char        month3[10]="zip";5 q% z; U& W6 d9 f: w) K
                    char    month4[10]="zotz";* k8 I- t* @0 f$ A4 X0 X9 a
                    char        month5[10]="tzec";
    1 ~( ]% |# E" f- R6 u                char    month6[10]="xul";3 C6 o* F: a, z1 x1 D
                    char        month7[10]="yoxkin";: D" \1 Q- d4 \* p9 U9 W
                    char    month8[10]="mol";& _0 F! _5 U4 ^8 d3 Y
                    char        month9[10]="chen";
    + M( k4 ]+ Z0 F* D+ W                char    month10[10]="yax";
    . w6 l* }4 ?/ C( [                char        month11[10]="zac";
    + O' D+ S7 X) q) n, e                char    month12[10]="ceh";
    6 s4 e, ^4 h9 j; g; N                char        month13[10]="mac";5 |% Z- L1 o* s: T+ E1 X9 M* ]+ m
                    char    month14[10]="kankin";
    2 s) Z: k9 a7 {                char    month15[10]="muan";1 W5 `8 O% e7 S+ C9 [: o* k
                    char        month16[10]="pax";
    7 Y- R8 v* g6 J, I( P                char    month17[10]="koyab";% V9 c  q9 y* C6 i
                    char        month18[10]="cumhu";
    2 D! G( `; T" _' I" m9 r; E" a                char    month19[10]="uayet";
    & y3 o: Q3 u* t3 s! X5 R" J: K2 {
    & I& t3 L  w0 Y! x& A, s1 w                //定义Haab的月份(数字)
    % d% N9 e# _8 x0 |# S                int Month;: K! f. E/ x6 t0 i) D# V( D
                    if(strcmp(month,month1)==0)
    + |+ f- l8 X% |" O                        Month=1;! O8 z% }  ^! o: z; |8 T, o  X
                    else if(strcmp(month,month2)==0)
    % T4 H( _2 s. j  E, k                        Month=2;
    ! H) P5 P; C: V/ A4 D                else if(strcmp(month,month3)==0)
    2 g( ?: l) B" R7 X& L# [' ~                        Month=3;
    - Z1 g+ D9 f7 b, {' U                else if(strcmp(month,month4)==0)+ {( e* K" D, w7 j* M" G6 B$ c; _
                            Month=4;               
    % m. p4 y: G2 V( U+ X                else if(strcmp(month,month5)==0)3 y/ c. v# Y- ?; }
                            Month=5;8 s8 r" J) ]6 ]8 f) _
                    else if(strcmp(month,month6)==0). ^3 }( m4 o. H6 b! g
                            Month=6;
    9 J' P4 E: w& T; G9 C, M! s: d- V1 \                else if(strcmp(month,month7)==0)
    ) Z4 O" J; V. D6 P9 _  _- c                        Month=7;" G' `- n1 q, a8 K5 A/ d0 [% Z
                    else if(strcmp(month,month8)==0)
    ( R! Z6 ~% a8 c1 l, g                        Month=8;: K& s3 z! s, n% P# k
                    else if(strcmp(month,month9)==0)
    3 s4 S+ [  l( e$ |0 a8 K# w                        Month=9;/ p2 `: b( `  g
                    else if(strcmp(month,month10)==0)
    % N! Q! [- {1 ~* G& y" ?                        Month=10;2 X2 q! r( o6 l3 ^9 X7 l* c
                    else if(strcmp(month,month11)==0)
    0 r! V5 Y- }, S8 N; ~4 G- x$ C, M                        Month=11;
    ) T$ a( g% O' I: {* r                else if(strcmp(month,month12)==0)
    7 A+ _7 @7 }( H$ Y8 b6 r2 F                        Month=12;* o+ c; w5 i6 N) ~4 w) e$ u
                    else if(strcmp(month,month13)==0)
    8 L6 B0 ]$ s# B/ h                        Month=13;
    * A6 q9 _5 k/ m                else if(strcmp(month,month14)==0). W8 k: ?! x9 I. [2 _0 Q* u
                            Month=14;
    9 s, a3 d2 J2 v& j) W                else if(strcmp(month,month15)==0)
    + o" g5 `( H, ?                        Month=15;
    ! K2 i4 }- ]6 u) t                else if(strcmp(month,month16)==0)
    5 F' d; y* B: ?4 r                        Month=16;- L8 M! l5 V3 z/ f& X6 I
                    else if(strcmp(month,month17)==0)+ [. A7 H6 B: a) e
                            Month=17;
    * H5 a4 g" w0 G: l7 x) ~- Q                else if(strcmp(month,month18)==0)5 l4 T, N- F$ p1 w$ q
                            Month=18;
    ! z* r* a' _6 k  d$ U7 Y1 x& i                else if(strcmp(month,month19)==0)' ?6 T: H; ^/ p( O4 ]1 {! x
                            Month=19;7 s' }; S% J7 V

    + c, U; q# w/ {" E6 M- T+ q* b% a; r        //定义Tzolkin
    1 q7 I. y' i+ ]* |& C6 D  l% g                int new_year;! o. o3 M1 \2 ?$ k5 ], m' W! ]
                    int new_day_Name;4 U3 L7 A; Z# s/ ?& B
                    int new_day_number;
      l5 T) q1 E; u$ w: N( r* n( y3 }- ~+ V- H+ l$ q' f  L& u
                    //计算总共天数
    $ k* r% ^7 @* {: X  U1 i( b5 T. `                number=day+1+(Month-1)*20+year*365;+ u0 }* o* \8 v, }' k% g8 c, |

    + h0 }) ^/ S. `- _% K                //计算Tzolkin所需值
    ' g0 i/ C  z7 s4 _                new_year=number/260;
    " h8 M* _8 r6 X) i0 D$ S                new_day_Name=number%20;  
    ' D) p! A0 ]& W6 N" \* [                if(number%13!=0)
    0 _6 X0 _' b4 Y; H5 Q                        new_day_number=number%13; : a4 [% j  b+ A* A4 e( g( {, {
                    else  new_day_number=13;
    ( g- n0 |" T+ u, O                 
    # C! y) [. I! v& v% L  J+ W            //定义所得Tzolkin某一天的名字
    . X2 t8 s0 N% o3 R, _5 C8 J                char  new_day_name[10];0 V3 z. n- B2 e2 S; f# E; s: D
    + h3 U2 E3 `8 k" i- l
                    //得出Tzolkin那一天的名字! n& d. E4 \: y8 v
                    if         (new_day_Name==1)$ h) {% ?! n& E5 D  z: b
                            strcpy(new_day_name,"imix");2 I0 ^! w/ O  }4 i5 ]6 g
                    else if         (new_day_Name==2)6 e7 {$ Z5 V' d( o: y
                            strcpy(new_day_name,"ik");
    - `  E$ C9 w: O4 o  _% U; A! r                else if         (new_day_Name==3)- f5 Z7 n+ z* ^4 F& t5 o
                            strcpy(new_day_name,"akbal");
    - B* K0 \. |/ O' V% j0 d# v                else if         (new_day_Name==4)
    0 P6 f0 h+ W7 z1 x; F% h                        strcpy(new_day_name,"kan");
    % @# b' m# t6 A- D5 H& D                else if         (new_day_Name==5)
    $ f4 s; V! Q+ U, z                        strcpy(new_day_name,"chicchan");& F* ]( f/ x! a8 U5 E; }2 L
                    else if         (new_day_Name==6)
    . y, d  Q8 U# W                        strcpy(new_day_name,"cimi");
    6 D7 V( w5 L' i* ]$ V- {/ _                else if         (new_day_Name==7)! y+ w6 o. K0 A% t% v
                            strcpy(new_day_name,"manik");
    2 _5 f1 v. u- Z$ l1 I6 ^2 }                else if         (new_day_Name==8)
    7 O/ ?( v% |2 E9 r- x                        strcpy(new_day_name,"lamat");
    1 T6 _9 J4 U4 L( ]2 D6 m& w                else if         (new_day_Name==9)
    + A# J0 i- J8 N7 S7 Z                        strcpy(new_day_name,"muluk");: G% m; _5 j( Q/ U+ f
                    else if         (new_day_Name==10)
    7 ], F" H& z1 d2 y3 F                        strcpy(new_day_name,"ok");! M# }  G* t2 z/ \4 Q% Y  P
                    else if         (new_day_Name==11)
    " @3 b4 T0 l6 a! e) n+ y+ W! O/ k                        strcpy(new_day_name,"chuen");
    0 f) O* [3 o( O. C3 q                else if         (new_day_Name==12)" R2 H2 a# j7 L
                            strcpy(new_day_name,"eb");; a7 {! o7 u. @
                    else if         (new_day_Name==13)
    , g8 S# n, c; V4 f* T8 E                        strcpy(new_day_name,"ben");
      Z4 x8 U3 V/ {' ?, M4 i+ z                else if         (new_day_Name==14)( q5 g) K3 T) F* [  A
                            strcpy(new_day_name,"ix");
    " T* W3 A; @8 B8 j                else if         (new_day_Name==15)  O$ L7 l5 g. [& x3 B( s
                            strcpy(new_day_name,"mem");" b( Q6 j3 g( H9 s
                    else if         (new_day_Name==16)
    ) h1 x( c+ w- a# w                        strcpy(new_day_name,"cib");
    ) S3 X& }+ g) c" ?; b5 z# p                else if         (new_day_Name==17)+ }3 O2 Y" S# v3 R. Y* e
                            strcpy(new_day_name,"caban");+ D0 t4 `; X# i; c
                    else if         (new_day_Name==18)0 G- ~5 A- I* c( r  T3 ^5 @, k
                            strcpy(new_day_name,"eznab");. f8 X( R1 y* W7 k8 x
                    else if         (new_day_Name==19)  N1 N6 a' U  Z
                            strcpy(new_day_name,"canac");5 M6 A/ \- {3 v7 C9 u8 v* Q8 d
                    else if         (new_day_Name==0)
    ) k8 B- d# y) B, l                        strcpy(new_day_name,"ahau");% {. \* b3 C! Q3 Q; _, p7 v8 H
    & ~# o; f( p" J. O8 D+ k
    / H; U+ ^, N0 C5 Y% {
                    //得出结论
    % U$ i5 H4 ^2 B7 t# S" S                printf("%d ",new_day_number);
    ) J1 ]8 v+ ?/ Q4 E4 Z7 t                printf("%s",new_day_name);5 c& G4 e: u/ D
                    printf(" %d",new_year);        & b8 T& N8 x% E+ V
                    printf("\n");. |4 h  O( G8 f4 z
            }7 m/ z3 s- g+ F% ]
            7 ]/ N: m$ V5 `5 D6 Y+ P
    }* z2 ]: x$ S$ |

    # w& @0 _, S# {; y: E* c& [8 P$ M( @0 N& z0 ]
    zan
    慢跑20 实名认证       

    57

    主题

    8

    听众

    3684

    积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    回复

    使用道具 举报

    Hundred        

    1

    主题

    10

    听众

    29

    积分

  • TA的每日心情
    开心
    2014-11-26 16:04
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    升级  25.26%

    自我介绍
    ha
    慢跑20 发表于 2014-2-20 16:04 ( K) ?- k" j4 G) M
    你做的南洋理工,还是杭电的OJ?
    $ v4 t. N% ]0 qOJ要求比较苛刻

    8 \0 {  Z2 S) g2 [天津大学的。。。我检查了很长时间都不知道怎么会出错。。。
    回复

    使用道具 举报

    Hundred        

    1

    主题

    10

    听众

    29

    积分

  • TA的每日心情
    开心
    2014-11-26 16:04
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    升级  25.26%

    自我介绍
    ha
    慢跑20 发表于 2014-2-20 16:04 8 U0 M5 f1 [: s( F' F% x
    你做的南洋理工,还是杭电的OJ?3 D, n% w1 I1 I& F( d/ U$ w* r
    OJ要求比较苛刻

    / f+ ], b) `) t6 w, o% g* {* Z我去。。我终于知道哪里错了。。不应该是new_year=number/260。。。而应该是
    ' u3 r; W& W& e/ j% I5 Wif(number%260==0)' a# B* U# S& a/ }; Z. k: V
          new_year=number/260-1;. \0 s( Z& U5 X
    else  
    & t3 i+ ?( g7 t+ c+ r0 _     new_year=number/260;
    : W7 c, \7 i! Q3 V2 D7 e& {" g这种小错误废了我好几个小时啊,,,

    点评

    慢跑20  嗯。加油! 下次避免这种错误就好了、  详情 回复 发表于 2014-2-20 20:49
    回复

    使用道具 举报

    慢跑20 实名认证       

    57

    主题

    8

    听众

    3684

    积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    Hundred 发表于 2014-2-20 17:22
    6 u, I2 w) N' V我去。。我终于知道哪里错了。。不应该是new_year=number/260。。。而应该是& Y- y# ~5 h7 w/ s
    if(number%260==0)( h  S8 o% S+ `0 `$ K$ G: x; B$ @
         ...
    $ J2 D1 O8 t0 T
    嗯。加油!- Q* R; J. x2 D  @/ y
    下次避免这种错误就好了、
    回复

    使用道具 举报

    1

    主题

    7

    听众

    480

    积分

  • TA的每日心情
    开心
    2016-6-2 14:16
  • 签到天数: 138 天

    [LV.7]常住居民III

    群组2014国赛优秀论文解析

    群组2014年地区赛数学建模

    群组Matlab讨论组

    回复

    使用道具 举报

    1

    主题

    7

    听众

    480

    积分

  • TA的每日心情
    开心
    2016-6-2 14:16
  • 签到天数: 138 天

    [LV.7]常住居民III

    群组2014国赛优秀论文解析

    群组2014年地区赛数学建模

    群组Matlab讨论组

    回复

    使用道具 举报

    6

    主题

    10

    听众

    1331

    积分

  • TA的每日心情
    开心
    2014-12-27 13:28
  • 签到天数: 105 天

    [LV.6]常住居民II

    升级  33.1%

    自我介绍
    我是建模爱好者
    回复

    使用道具 举报

    6

    主题

    10

    听众

    1331

    积分

  • TA的每日心情
    开心
    2014-12-27 13:28
  • 签到天数: 105 天

    [LV.6]常住居民II

    升级  33.1%

    自我介绍
    我是建模爱好者
    回复

    使用道具 举报

    6

    主题

    10

    听众

    1331

    积分

  • TA的每日心情
    开心
    2014-12-27 13:28
  • 签到天数: 105 天

    [LV.6]常住居民II

    升级  33.1%

    自我介绍
    我是建模爱好者
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文   

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2019-10-16 20:37 , Processed in 1.435764 second(s), 97 queries .

    回顶部