POJ 1008 (模拟)
2016-05-26 01:15
495 查看
题意:玛雅日历有两种,第一种一年365天19个月前18个月每月20天,第19月5天,第二种日历是一年260天,13个月每月20天,每月有两种计算天数的一种是英文,一种是1~13天。
题外话:现在为止我还是极少接触算法,这道题听说是简单的模拟题。虽然我的bug太多改了很久,但是我还是觉得极大增强了我的信心。
#include<stdio.h>
#include<string.h>
char Haab[25][10] = {"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"}; //没有对第19月单独处理,是因为不影响。
char Tzo[25][10] = {"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};
int manth(char a[])
{
int i;
for(i = 0;i < 19; i++)
if(strcmp(Haab[i],a) == 0)
return i;
return -1;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",n);
while(n--)
{
int day1,year1;
char m[10];
scanf("%d.%s%d",&day1,m,&year1);
long allday = year1*365 + manth(m)*20 + day1;
long year2 = allday/260;
long day2 = allday%260;
printf("%ld %s %ld\n",day2%13+1,Tzo[day2%20],year2); //天数要加1,因为题中说对一天有差值1
}
return 0;
}
用c++的输入输出流简单很多。
#include<iostream>
#include<string>
using namespace std;
string Haab[19] = {"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};
string Tzo[20] = {"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};
int manth(string a)
{
int i;
for(i = 0;i < 19; i++)
if(Haab[i] == a)
return i;
return -1;
}
int main()
{
int n;
cin>>n;
cout<<n<<endl;
while(n--)
{
int day1,year1;
string manth1;
cin>>day1>>manth1>>manth1>>year1;
long allday = year1*365 + manth(manth1)*20 + day1;
long year2 = allday/260;
long day2 = allday%260;
cout<<day2%13+1<<" "<<Tzo[day2%20]<<" "<<year2<<endl;
}
return 0;
}
题外话:现在为止我还是极少接触算法,这道题听说是简单的模拟题。虽然我的bug太多改了很久,但是我还是觉得极大增强了我的信心。
#include<stdio.h>
#include<string.h>
char Haab[25][10] = {"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"}; //没有对第19月单独处理,是因为不影响。
char Tzo[25][10] = {"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};
int manth(char a[])
{
int i;
for(i = 0;i < 19; i++)
if(strcmp(Haab[i],a) == 0)
return i;
return -1;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",n);
while(n--)
{
int day1,year1;
char m[10];
scanf("%d.%s%d",&day1,m,&year1);
long allday = year1*365 + manth(m)*20 + day1;
long year2 = allday/260;
long day2 = allday%260;
printf("%ld %s %ld\n",day2%13+1,Tzo[day2%20],year2); //天数要加1,因为题中说对一天有差值1
}
return 0;
}
用c++的输入输出流简单很多。
#include<iostream>
#include<string>
using namespace std;
string Haab[19] = {"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};
string Tzo[20] = {"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};
int manth(string a)
{
int i;
for(i = 0;i < 19; i++)
if(Haab[i] == a)
return i;
return -1;
}
int main()
{
int n;
cin>>n;
cout<<n<<endl;
while(n--)
{
int day1,year1;
string manth1;
cin>>day1>>manth1>>manth1>>year1;
long allday = year1*365 + manth(manth1)*20 + day1;
long year2 = allday/260;
long day2 = allday%260;
cout<<day2%13+1<<" "<<Tzo[day2%20]<<" "<<year2<<endl;
}
return 0;
}
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- jQuery支持添加事件的日历特效代码分享(3种样式)
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例