二、13号又恰好是星期五真的很特殊吗?也就是说,13号出现在星期五的几率比出现在其它周日的几率大吗?要回答这个问题。
写一个程序计算13日出现在某个星期的次数(在给定的N年时间中)。这个时间段为1900年1月1日到1900+N-1年12月31日。
N为非负整数,不超过400.(1900年1月1日是星期一)
输入描述:
1 0
第一个参数为years,表示距离1900年1月1日的年数
第二个参数为weeks,表示星期数(分别用0——6代表星期日到星期六)
输出描述:
13日出现在星期数为weeks的次数,若异常失败输出为-1
输入
1 0
输出
1
(通过率62.5%)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
int year,weeks,i,j=0;
int a[13]={0,12,43,71,102,132,163,193,224,255,285,316,346};
int b[13]={0,12,43,72,103,133,164,194,225,256,286,317,347};
cin >> year >> weeks;
if(year > 400 || year <=0 || weeks <0 || weeks > 6) { cout << "-1" <<endl; return 0;}
for(i=1;i<12;i++)
{
if(year % 4 != 0 || (year % 100 == 0 && year % 400 != 0 ))
{
for(i=1;i<12;i++)
{
if((365*year+year/4-year/100+year/400+a[i])%7==weeks)
j++;
}
}else
{
for(i=1;i<12;i++)
{
if((365*year+year/4-year/100+year/400+b[i])%7==weeks)
j++;
}
}
}
if(j==0)
{
cout << "-1" <<endl;
}else
{
cout << j <<endl;
}
return 0;
}