C++ 问题19工程计划星期日

C++ 问题19工程计划星期日,c++,math,adhoc,C++,Math,Adhoc,这是我的密码。问题的答案是171,但我的代码生成172。请大家在下面的代码中找出问题所在 #include <bits/stdc++.h> using namespace std ; typedef long long LL ; int ordYear[12] = {31,28,31,30,31,30,31,31,30,31,30,31} ; int leapYear[12] = {31,29,31,30,31,30,31,31,30,31,30,31} ; int main(){

这是我的密码。问题的答案是171,但我的代码生成172。请大家在下面的代码中找出问题所在

#include <bits/stdc++.h>
using namespace std ;
typedef long long LL ;
int ordYear[12] = {31,28,31,30,31,30,31,31,30,31,30,31} ;
int leapYear[12] = {31,29,31,30,31,30,31,31,30,31,30,31} ;

int main(){
    int leapFlag = 0 ;
    LL ans = 0 ;
    int dayonfirst = 2 ; // since it was tuesday on 1 Jan 1901
    for (int i=1901 ; i<=2000 ; i++){
        if ( (i%4==0 && i%100!=0) || (i%100==0 && i%400==0) )
            leapFlag = 1 ;
        for (int i=0 ; i<12 ; i++){
            int oddDays ;
            if (leapFlag == 1)
                oddDays = leapYear[i]%7 ;
            else
                oddDays = ordYear[i]%7 ;
            dayonfirst += oddDays  ;
            if(dayonfirst == 7)
                ans++ ;
            else if (dayonfirst > 7)
                dayonfirst = dayonfirst%7 ;
        }
    }
    cout << ans << endl ;
    return 0 ;
}
#包括
使用名称空间std;
typedef long-long-LL;
年份[12]={31,28,31,30,31,30,31,30,31,30,31};
年份[12]={31,29,31,30,31,30,31,30,31,30,31};
int main(){
int leapFlag=0;
LL-ans=0;
int dayonfirst=2;//因为是1901年1月1日星期二

对于(int i=1901;i您需要
else语句
在非闰年时分配
leapFlag=0

if ( (i%4==0 && i%100!=0) || (i%100==0 && i%400==0) )
    leapFlag = 1; 
else 
    leapFlag = 0;

<代码> LePrave<代码>如何重置?我是否丢失它?请将问题语句或链接添加到问题陈述中?请考虑使用如<代码> Boo-ISH-LeAP年历(INTY)这样的函数来封装和测试该逻辑。