1 条题解

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

    C :

    #include "stdio.h"
    int n,year,month,day;
    
    int count_year(int x)
    {
    	if ((((year%4)==0)&&(year%100!=0))||(year%400==0)) return (366);
    	else return (365);
    }
    
    int count_month(int x,int y)
    {
    	int t;
    	 switch (month)
          {
              case 1 :
              case 3 :
              case 5 :
              case 7 :
              case 8 :
              case 10 :
              case 12 : t=31;break;
              case 2 :
            	  {
                	  t=28;
                      if ((((y%4)==0)&&(y%100!=0))||(y%400==0)) t=29;
                   	  break;
            	  }
               default :t=30;
          }
    	 return(t);
    }
    
    void work()
    {
    	int sum=n;
    	year=2000;
    	month=1;
    	day=1;
    	while (n>364)
    	{
    		if (n<count_year(year)) break;
    		n=n-count_year(year);
    		year++;
    	}
    	while (n>28)
    	{
    		if (n<count_month(month,year)) break;
    		n=n-count_month(month,year);
    		month++;
    	}
    	day=day+n;
    	printf("%d-",year);
    	if (month<10) printf("0");
    	printf("%d-",month);
    	if (day<10) printf("0");
    	printf("%d ",day);
    	switch(sum-(sum/7)*7)
    	{
    		case 0:printf("Saturday\n");break;
    	    case 1:printf("Sunday\n");break;
    		case 2:printf("Monday\n");break;
    		case 3:printf("Tuesday\n");break;
    		case 4:printf("Wednesday\n");break;
    		case 5:printf("Thursday\n");break;
    		case 6:printf("Friday\n");break;
    	}
    
    
    }
    
    void main()
    {
    
    	while (1)
    	{	
    		scanf("%d",&n);
    		if (n==-1) break;
        	work();
    		
    	}
    }
    

    C++ :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #include <algorithm>
    #include <map>
    #include <queue>
    #include <stack>
    #include <iostream>
    using namespace std;
    
    int leapyear(int year)
    {
    	if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    		return 1;
    	return 0;
    }
    
    int monthofday(int month, int year)
    {
    	if(month == 2)
    	{
    		if(leapyear(year) == 1)
    			return 29;
    		else
    			return 28;
    	}
    	if(month % 2 == 0)
    	{
    		if(month <= 7)
    			return 30;
    		else
    			return 31;
    	}
    	else
    	{
    		if(month > 7)
    			return 30;
    		else
    			return 31;
    	}
    }
    
    int main ()
    {
    	//freopen("A.in", "r", stdin);
    	//freopen("A.out", "w", stdout);
    	int n, m, i, j, k, len;
    	int leap[2] = {365,366};
    	char DayOfWeek[7][10] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    	while(scanf("%d",&n) && n != -1)
    	{
    		int nn = n;
    		int y = 2000, m = 1, d = 1;
    		while(n >= leap[leapyear(y)])
    		{
    			n -= leap[leapyear(y)];
    			y ++;
    		}
    
    		for(m = 1 ; m <= 12 ; m ++)
    		{
    			if(n >= monthofday(m,y))
    				n -= monthofday(m,y);
    			else
    				break;
    		}
    
    		for(d = 1 ; d < monthofday(m,y); d ++)
    		{
    			if(n > 0)
    				n --;
    			else
    				break;
    		}
    		int mm = m /10;
    		int dd = d / 10;
    
    		printf("%d-%d%d-%d%d %s\n",y,mm,m%10,dd,d%10,DayOfWeek[(6+nn%7)%7]);
    	}
    	return 0;
    }
    
    • 1

    信息

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