求輸入的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;
}