POJ1008

*题目大意*: 

日历转换

*解题思路*:    

将日历转换为与世界起始天的相差天数即可。

注意%和/的使用, 输入输出的处理。

*代码*:

 <textarea readonly="readonly" name="code" class="c++">
#include <iostream>
#include <cstdio>

using namespace std;

int hday, hyear, hmonth, tday, tmonth, tyear;
char hstr[10];
int total;
char tstr[20][30] = {"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat",
                    "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban",
                    "eznab", "canac", "ahau"};

void str_to_num(char s[])
{
    switch(s[0])
    {
        case 'p': if (s[1]=='o') hmonth = 1;
                  if (s[1]=='a') hmonth = 16;
                  break;
        case 'n': hmonth = 2; break;
        case 'z': if (s[1]=='i') hmonth = 3;
                  if (s[1]=='o') hmonth = 4;
                  if (s[1]=='a') hmonth = 11;
                  break;
        case 't': hmonth = 5; break;
        case 'x': hmonth = 6; break;
        case 'y': if (s[1]=='o') hmonth = 7;
                  if (s[1]=='a') hmonth = 10;
                  break;
        case 'm': if (s[1]=='o') hmonth = 8;
                  if (s[1]=='a') hmonth = 13;
                  if (s[1]=='u') hmonth = 15;
                  break;
        case 'c': if (s[1]=='h') hmonth = 9;
                  if (s[1]=='e') hmonth = 12;
                  if (s[1]=='u') hmonth = 18;
                  break;
        case 'k': if (s[1]=='a') hmonth = 14;
                  if (s[1]=='o') hmonth = 17;
                  break;
        case 'u': hmonth = 19;break;
    }
}

int main()
{
  //  freopen("1.txt","r", stdin);
    int t;
    scanf("%d", &t);
    printf("%d\n", t);
    while (t--)
    {
        scanf("%d.%s%d", &hday, hstr, &hyear);
        str_to_num(hstr);
        total = 365*hyear+(hday)+(hmonth-1)*20;
        tyear = total / 260;
        tmonth = (total % 260) % 13+1;
        tday = (total%260)%20;
        printf("%d %s %d\n", tmonth, tstr[tday], tyear);
    }
    return 0;
}
</textarea>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值