1008 442B

今日は 1008 -- Maya Calendar をちょっとがんばってみた。
問題文が長くて、理解するのにだいぶ時間がかかった。
ようするに

  • 変換元の Haab => 一年は19ヶ月で、1-18ヶ月目は20日間で19ヶ月目は5日間(つまり一年は365日)。月の名前は pop, no, ..., cumhu, uayet
  • 変換先の Tzolkin => 一年は13日単位(これを仮にAとする)と20日単位(これを仮にBとする)に分けられ、ある年の"日付"はAとBの組み合わせでユニークに表される(つまり一年は260日)。Aは1オリジンの数字で、Bは imix, ik, ..., ahau という名前がついている


結果は 442B。

i;y;t;main(d){char*h[]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"},*z[]={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"},m[9];gets(m);puts(m);for(;~scanf("%d.%s%d",&d,m,&y);){for(i=0;strcmp(h[i],m);i++);t=y*365+20*i+d;printf("%d %s %d\n",t%13+1,z[t%20],t/260);}}


というか、1006 -- Biorhythms が真面目に解けない俺は死んだほうがいいのかもしれない。