1 条题解

  • 0
    @ 2025-4-12 21:43:14

    C :

    #include<stdio.h>
    int main()
    {
    	int n,week,c,y,i,j;
    	while(scanf("%d",&n)!=EOF)
    	{
    		int a[8]={0};
    		for(i=0;i<n;i++)
    		{
    			if(i==n-1)
    			{
    				c=(1900+i)/100;
    			    y=1900+i-c*100;
    			for(j=3;j<=12;j++)
    			{
    				week=(c/4)-2*c+(y+y/4)+(13*(j+1)/5)+12;
    				while(week<0){week+=7;}
    				week%=7;
    				switch(week)
    				{
    					case 0:a[7]++;break;
    					case 1:a[1]++;break;
    					case 2:a[2]++;break;
    					case 3:a[3]++;break;
    					case 4:a[4]++;break;
    					case 5:a[5]++;break;
    					case 6:a[6]++;break;	
    				}
    			}
    			}
    			else
    			{
    			c=(1900+i)/100;
    			y=1900+i-c*100;
    			for(j=3;j<=14;j++)
    			{
    				week=(c/4)-2*c+(y+y/4)+(13*(j+1)/5)+12;
    				while(week<0){ week+=7; }
    				week%=7;
    				switch(week)
    				{
    					case 0:a[7]++;break;
    					case 1:a[1]++;break;
    					case 2:a[2]++;break;
    					case 3:a[3]++;break;
    					case 4:a[4]++;break;
    					case 5:a[5]++;break;
    					case 6:a[6]++;break;
    				}
    			}
    		    }
    		}
    		a[6]+=1;
    		a[2]+=1;
    		printf("%d %d %d %d %d %d %d\n",a[6],a[7],a[1],a[2],a[3],a[4],a[5]);
    	}
    }
    

    C++ :

    /*
    ID:wangzhe30
    LANG:C
    PROG:friday
    */
    #include <stdio.h>
    int main()
    {
    	//freopen("friday.in","r",stdin);
    	//freopen("friday.out","w",stdout);
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    	    int year,month2=0,m,dat;
            int day[7]={0},month[13]={0,0,0,0,0,0,0,0,0,0,0,0,0};
            month[1]=1;
            for (year=0;year<n;year++)
            {
                if(!((1900+year)%400)||!((1900+year)%4)&&((1900+year)%100))
                    month2=1;
                else
                    month2=0;
    
                for (m=1;m<=13;m++)
                {
                    if(m==1||m==3||m==5||m==7||m==8||m==10)
                    {
                        dat=(month[m]+5)%7;
                        day[dat]++;
                        month[m+1]=(month[m]+3)%7;
                    }
                    if(m==2)
                    {
                        dat=(month[m]+5)%7;
                        day[dat]++;
                        month[3]=(month[2]+month2)%7;
                    }
                    if(m==12)
                    {
                        dat=(month[m]+5)%7;
                        day[dat]++;
                        month[1]=(month[12]+3)%7;
                    }
                    if(m==4||m==6||m==9||m==11)
                    {
                        dat=(month[m]+5)%7;
                        day[dat]++;
                        month[m+1]=(month[m]+2)%7;
                    }
                }
            }
                printf("%d %d %d %d %d %d %d\n",day[6],day[0],day[1],day[2],day[3],day[4],day[5]);
    	}
    }
    
    
    • 1

    信息

    ID
    1364
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者