1 条题解

  • 0
    @ 2025-9-9 23:46:56

    C :

    #include<stdio.h>
    int main()
    {
    	int n,m,i,j,k,s,p,q,N,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    	while(~scanf("%d",&n))
    	{
    		s=0;p=0;
    		if(n<79)for(i=0;i<3;++i)
    		{
    				for(j=1;j<=a[i];++j)
    				{
    					s++;
    					if(s>=79-n)	
    					{
    						printf("2014 %d %d %d\n",i+1,j,(4-n%7+7)%7==0?7:(4-n%7+7)%7);
    						p=1; break;
    					}
    				}if(p)break;
    		}
    		else 
    		{
    			m=q=n-79;
    			for(i=2013;i>=0;--i)
    			{
    				if(i%4==0&&i%100||i%400==0)a[1]=29;
    				else a[1]=28;
    				N=a[1]==29?366:365;
    				if(q>N){q-=N;continue;}
    				for(j=0;j<12;++j)
    				{
    					for(k=1;k<=a[j];++k)
    					{
    						s++;
    						if(s>=N-q)
    						{
    							printf("%d %d %d %d\n",i,j+1,k,(2-m%7+7)%7==0?7:(2-m%7+7)%7);
    							p=1;break;
    						}
    					}if(p)break;
    				}if(p)break;
    			}
    		}
    	}
    	return 0;
    }
    

    C++ :

    #include<iostream>
    using namespace std;
    bool pan(int n)
    {
         if((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)
         return true;
         return false;
    }
    int main()
    {
        int n, t1, y1, m1, i, d, x;
        int a[2][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
        {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
        while(cin >> n)
        {
                  y1 = 2014;
                  t1 =  n;
                  while(t1 >= 365)
                  {
                           if(pan(y1) && t1 >= 366)
                           {
                                      y1--;
                                      t1 -= 366;
                           }
                           else
                           if(!pan(y1) && t1 >= 365)
                           {
                                       y1--;
                                       t1 -= 365;
                           }
                  }
                  m1 = 3;
                  for(i = 1; t1 >= 28; i--)
                  {
                        if(i < 0)
                        {
                             y1--;
                             i = 11;
                        }
                        if(pan(y1))
                        {
                                   t1 -= a[1][i];
                                   m1 = i + 1;
                        }
                        else
                        {
                            t1 -= a[0][i];
                            m1 = i + 1;
                        }
                  }
                  if(t1 < 19)
                  {
                        d = 20 - t1;
                  }
                  else
                  {
                      t1 -= 20;
                      m1--;
                      if(m1 < 1)
                      m1 = 12;
                      if(pan(y1))
                      {
                                 d = a[1][m1 - 1] - t1;
                      }
                      else
                      {
                          d = a[0][m1 - 1] - t1;
                      }
                  }
                  x = n % 7;
                  if(x < 4)
                  x = 4 - x;
                  else
                  x = 11 - x;
                  cout << y1 << " " << m1 << " " << d << " " << x << endl;
        }
    }
    
    
    • 1

    信息

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