#include <bits/stdc++.h>

using namespace std;
#define IOS ios::sync_with_stdio(false), cin.tie(0);
#define rep(i, n) for (int i = 0; i < (n); i++)
typedef long long LL;
typedef pair<int, int> PII;
typedef vector<int> vi;

//const int N=;

int days[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int s[15];
int get(int y, int m, int d)
{
    int c=0;
    switch(m)
    {
        case 12: c+=30;
        case 11: c+=31;
        case 10: c+=30;
        case 9: c+=31;
        case 8: c+=31;
        case 7: c+=30;
        case 6: c+=31;
        case 5: c+=30;
        case 4: c+=31;
        case 3: if(y%100 && y%4==0||y%400==0) c++; c+=28;
        case 2: c+=31;
        case 1:c+=d;
    }
    return c;
}
void prework()
{
    for(int i=1; i<=12; i++) s[i]=s[i-1]+days[i];
}
int main()
{
    IOS
    prework();
    int y, m, d;
    cin>>y>>m>>d;
    int ans=s[m-1]+d;
    if((y%100 && y%4==0||y%400==0) && m>2) ans++;
    cout<<ans;
    return 0;
}

#牛客春招刷题训练营#

get函数即为答案,我们利用switch的一点小技巧,从case12一直到case1去累加这个时间

y%100 && y%4==0||y%400==0利用了&&的优先级比||高的技巧,是4的倍数但不是100的倍数,或者400的倍数是闰年

另一种方法就是题目代码中的prework 前缀和预处理