2 条题解

  • 1
    @ 2024-7-25 13:03:00

    参考答案:

    #include<iostream>
    
    using namespace std;
    
    int main() 
    {
    	int y, m, d;
    
    	scanf("%4d-%2d-%2d", &y, &m, &d);
    	if (d > 2) printf("%d-%02d-%02d\n", y, m, d - 2);
    	else
    	{
    		if (m == 3)
    		{
    			if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
    			{
    				if (d == 1)
    					printf("%d-%02d-28\n", y, m - 1);
    				else
    					printf("%d-%02d-29\n", y, m - 1);
    			}
    			else
    			{
    				if (d == 1)
    					printf("%d-%02d-27\n", y, m - 1);
    				else
    					printf("%d-%02d-28\n", y, m - 1);
    			}
    		}
    		else if (m == 1)
    		{
    			if (d == 1)
    				printf("%d-12-30\n", y - 1);
    			else printf("%d-12-31\n", y - 1);
    		}
    		else if (m == 7)
    		{
    			if (d == 1)
    				printf("%d-%02d-29\n", y, m - 1);
    			else printf("%d-%02d-30\n", y, m - 1);
    		}
    		else if (m == 8)
    		{
    			if (d == 1)
    				printf("%d-%02d-30\n", y, m - 1);
    			else printf("%d-%02d-31\n", y, m - 1);
    		}
    		else if (m == 5 || m == 10 || m == 12)
    		{
    			if (d == 1)
    				printf("%d-%02d-29\n", y, m - 1);
    			else printf("%d-%02d-30\n", y, m - 1);
    		}
    		else
    		{
    			if (d == 1)
    				printf("%d-%02d-30\n", y, m - 1);
    			else printf("%d-%02d-31\n", y, m - 1);
    		}
    	}
    
    	return 0;
    }
    
    • 0
      @ 2025-5-19 23:38:55
      #include<iostream>
      
      bool j(int y)
      {
      	return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
      }
      
      void solve(int date[3])
      {
      	int they{date[0]}, them{date[1]}, tdby{date[2]};
      	int m[13] = {29,
      		31, 28, 31,
      		30, 31, 30,
      		31, 31, 30,
      		31, 30, 31
      	};
      	if(tdby - 2 <= 0) {
      		if(j(they) && them == 3) {
      			tdby += m[0] - 2;
      			them = 2;
      		}
          else if(them == 1) {
      			they--;
      			them = 12;
      			tdby += m[12] - 2;
      		}
          else {
      			them--;
      			tdby += m[them] - 2;
      		}
      	}
        else {
      		tdby -= 2;
      	}
      	printf("%d-%02d-%02d", they, them, tdby);
      }
      
      int main()
      {
      	int date[3];
      	scanf(
      		"%d-%d-%d",
      		&date[0], &date[1], &date[2]
      	);
      	solve(date);
      	return 0;
      }
      
      
      • 1

      信息

      ID
      45
      时间
      1000ms
      内存
      256MiB
      难度
      9
      标签
      递交数
      20
      已通过
      2
      上传者