7-6 黑色13号 (80分)
13 号 让人觉得十分不爽 是一个不同寻常的日子。
现在你来计算下未来 n 年里 13 号落在周一到周日的天数。
假定当前日期是 1900 年 1 月 1 日,星期一。
输入格式:
在一行里给出一个n(1≤n≤500)。
输出格式:
七个整数,第一个代表落在周六的天数,第二个代表落在周天的天数,第三个代表落在周一的天数。。。。。。
行首尾不要输出多余的空格。
输入样例:
20
输出样例:
在这里给出相应的输出。例如:
36 33 34 33 35 35 34
大佬指点
#include <stdio.h>
int main()
{
int i,n,x=3;//x初值为3 ,使12月到1月满足13号为为周六
int a[7]={0};//a[0]代表周日
scanf("%d",&n);
for(i=0;i<n;i++)//循环n年
{
x+=3;//1 3 5 7 8 10 12月13号到下月13号%7余3
if(x>=7)//一周满了到下一周
x=x-7;
a[x]++;//12到1月
x+=3;
if(x>=7)
x=x-7;
a[x]++;// 1月到2月
if((1900+i)%4==0&&(1900+i)%100!=0||(1900+i)%400==0)//闰年特殊
x+=1;
else
x=x;//不闰年
if(x>=7)
x=x-7;
a[x]++;//2月到3月
x+=3;
if(x>=7)
x=x-7;
a[x]++;//3到4月
x+=2;//其余月份余2天
if(x>=7)
x=x-7;
a[x]++;//4到5
x+=3;
if(x>=7)
x=x-7;
a[x]++;//5到6
x+=2;
if(x>=7)
x=x-7;
a[x]++;//6到7
x+=3;
if(x>=7)
x=x-7;
a[x]++;//7到8
x+=3;
if(x>=7)
x=x-7;
a[x]++;//8到9
x+=2;
if(x>=7)
x=x-7;
a[x]++;//9到10
x+=3;
if(x>=7)
x=x-7;
a[x]++;//10到11
x+=2;
if(x>=7)
x=x-7;
a[x]++;//11到12
}
printf("%d %d %d %d %d %d %d",a[6],a[0],a[1],a[2],a[3],a[4],a[5]);
return 0;
}