1 solutions

  • 0
    @ 2022-12-29 13:10:00
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6;
    int vis[N],arr[N];
    void check()
    {
    	memset(vis,0,sizeof(vis));
    	memset(arr,0,sizeof(arr));
    	for(int i=1998;i<10000;i++)
    	{
    		if((i%4==0&&i%100!=0)||(i%100==0&&i%400==0))
    			vis[i]=1;
    	}
    	arr[1]=4,arr[2]=5,arr[3]=6,arr[4]=7;
    	for(int j=5;j<10000;)
    	{
    		for(int r=1;r<=7;r++)
    		{
    			arr[j]=r;
    			j++;
    		}
    	}
    }
    int main()
    {
    	check();
    	int n,sum=0;
    	int s1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    	int s2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    	cin>>n;
    	for(int i=1998;i<n;i++)
    	{
    		if(vis[i])
    			sum+=366;
    		else
    			sum+=365;
    	}
    	int k=0;
    	int day=13+sum;
    	if(arr[day]==5)
    		k++;
    	if(vis[n])
    	{
    		for(int i=0;i<11;i++)
    		{
    			day+=s2[i];
    			if(arr[day]==5)
    				k++;
    		}
    	}
    	else
    	{
    		for(int i=0;i<11;i++)
    		{
    			day+=s1[i];
    			if(arr[day]==5)
    				k++;
    		}
    	}
    	cout<<k<<endl;
    	return 0;
    }
    

    Information

    ID
    1189
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    9
    Tags
    # Submissions
    12
    Accepted
    4
    Uploaded By