题目描述
在国外,每月的 13 号和每周的星期 5 都是不吉利的。特别是当 13 号那天恰好是星期 5时,更不吉利。
现在给你一个年份,请你从小到大依次输出当年所有13 号是星期 5 的月份。
输入描述:
输入包含多组数据,每组数据包含一个正整数year(2000≤year≤9999)。
输出描述:
对应每一组数据,输出所有符合条件的月份,月份之间用空格隔开。
如果当年不存在13号是星期五的月份,就输出一行Luck。
输入例子:
2000
2001
2002
输出例子:
10
4 7
9 12
我的代码:
#include<stdio.h>
int days(int y,int m,int d)
{
int day=0,i;
for(i=1;i<m;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
day=day+31;
else if(i==2)
{
if((y%4==0 && y%100!=0) || y%400==0)
day=day+29;
else day=day+28;
}
else day=day+30;
}
return 365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+day+d;
}
int main()
{
int y;
while(scanf("%d",&y)!=EOF)
{
int cnt=0,i;
for(i=1;i<=12;i++)
{
int t=days(y,i,13)%7;
if(t==5)
{
cnt++;
if(cnt>1) printf(" ");
printf("%d",i);
}
}
if(cnt==0) printf("Luck");
puts("");
}
return 0;
}