求输入的year一年中有多少个13号又是星期五的情形。
根据题目给出的1998年1月1日是星期四
,往后推算,
要明确当前这一年是平年还是闰年,写一个函数判断
剩下的就是模拟日期的变换
today代表的是当前这个月过了几天
week代表今天是周几
ans为答案
mounth为月份
需要注意的是ans变化的时候是年份与你输入年份相同的时候
#include<iostream>
using namespace std;
int mp[] = {31,28,31,30,31,30,31,31,30,31,30,31};
void check(int year) {
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) mp[1] = 29;
else mp[1] = 28;
}
int main() {
int year;
cin >> year;
int today = 1, ans = 0, mounth, week = 4;
for(int i = 1998; i <= year; i++){
check(i);
mounth = 0;
while(1){
today++;
week = (week + 1) % 7;
if(i == year && today == 13 && week == 5)
ans++;
if(today == mp[mounth]){
mounth++;
today = 0;
}
if(mounth > 11)
break;
}
}
cout << ans << endl;
return 0;
}