poj1008(模拟)
来源:互联网 发布:昌吉电信怎么用4g网络 编辑:程序博客网 时间:2024/06/06 14:24
传送门:poj1008
题意和解法都挺简单的,从这个题中能学到的最重要的就是对边界和特殊情况的处理,从总天数转化到要输出的年份、月份、天的时候处理情况都不相同,天数是减一取余再加一,月份由于涉及到数组的下标,边界情况很不好处理,这里就要把最后一个月份放到数组最开头,这样正常取余就好了,年份要注意的一点是,全年若有260天,则第260天也是上一年的而不是下一年的。
#include <iostream>#include <cstdio>#include <cstring>#include <math.h>using namespace std;char s[50];char month[19][10]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};char Tzolkin[20][10]={"ahau","imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb", "ben","ix","mem","cib","caban","eznab","canac"};int main(){int t;scanf("%d",&t);printf("%d\n",t);getchar();while(t--){memset(s,0,sizeof(s));gets(s);int n=0;if('0'<=s[1]&&s[1]<='9')n=(s[0]-'0')*10+s[1]-'0';elsen=s[0]-'0';int len=strlen(s);char s1[10];memset(s1,0,sizeof(s1));int c=0;for(int i=0;i<len;i++){if('a'<=s[i]&&s[i]<='z')s1[c++]=s[i];}int tt;for(int i=0;i<20;i++){if(strcmp(s1,month[i])==0){tt=i;break;}}double year=0;for(int i=len-1;i>len-5;i--){if('0'<=s[i]&&s[i]<='9'){year+=(pow(10,(len-i-1))*(s[i]-'0'));}}int day=year*365+tt*20+n+1;if(day%260)printf("%d %s %d\n",(day-1)%13+1,Tzolkin[day%20],day/260);elseprintf("%d %s %d\n",(day-1)%13+1,Tzolkin[day%20],(day-1)/260);}return 0;}
0 0
- poj1008(模拟)
- POJ1008(模拟题)
- poj1008 模拟
- poj1008 模拟
- POJ1008 模拟
- poj1008 模拟
- POJ1008 模拟
- 模拟日历计算 poj1008
- POJ1008简单模拟
- poj1008
- POJ1008
- POJ1008
- poj1008
- POJ1008
- poj1008
- poj1008
- poj1008
- poj1008
- 数据结构之树
- 大数据Spark“蘑菇云”行动第56课:在线广告点击黑名单分析和实现
- 整型与字符型相互转换——C语言
- Atitit.软件研发团队建设原理与概论 理论
- 移动AR示例更新
- poj1008(模拟)
- 数据结构之排序
- Mathjax 引擎与LaTex公式教程
- 常用排序算法之快速排序
- ---jsp与javabean
- 设计模式
- 《计算机网络自顶向下方法》
- 仿映客直播底部聊天框弹起不会挤压布局(兼容虚拟按键手机)
- 关于编译报错 error: cannot convert ‘const std::__cxx11::basic_string’ to ‘const char*’ 的处理