2020浙江省ACM省赛A题

it2023-09-17  78

2020 ACM浙江省省赛A 题其他题待补

很简单先打表,然后输出就可注意第一天如果是包含202则需特殊处理

#include<iostream> using namespace std; int year1,m1,d1,year2,m2,d2; long long a[10000][13][32]; int yf(int x,int y){ if(y==2){ if((x%4==0 && x%100!=0)||(x%400==0)){ return 29; } else{ return 28; } } else if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){ return 31; } else{ return 30; } } bool pd(int x){ while(x!=0){ if(x%1000==202){ return true; } x=x/10; } return false; } int main(){ long long ans=0; for(int i=2000;i<10000;i++){ for(int j=1;j<=12;j++){ for(int k=1;k<=yf(i,j);k++){ int s=i*10000+j*100+k; if(pd(s)){ ans++; } a[i][j][k]=ans; } } } int t; cin>>t; while(t--){ cin>>year1>>m1>>d1>>year2>>m2>>d2; if(pd(year1*10000+m1*100+d1)){ cout<<a[year2][m2][d2]-a[year1][m1][d1]+1<<endl; } else{ cout<<a[year2][m2][d2]-a[year1][m1][d1]<<endl; } } }

第一次参加省赛收获颇丰

最新回复(0)