1 条题解

  • 0
    @ 2024-12-24 9:54:34

    C :

    #include <stdio.h>
    #include <math.h>
    
    int m[][2]={0,0,31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,31,30,30,31,31};
    
    int leap(int year)
    {
      return((year%4==0&&year%100!=0)||(year%400==0));
    }
    
    int day(int year,int month,int day)
    {
      int d=0;
      int k=0;
        int i;
    	  if(leap(year))
        k=1;
      for(i=1;i<month;i++)
        d+=m[i][k];
      d+=day;
      return(d);
    }
    main()
    {
      int y1,y2,m1,m2,d1,d2,day1,day2,i;
      while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF)
      {
    	  scanf("%4d%2d%2d",&y2,&m2,&d2);
    	  day1=day(y1,m1,d1);
    	  day2=day(y2,m2,d2);
    	  for(i=0;i<y1;i++)
    	  {
    		  if(leap(i))
    			  day1+=366;
    		  else
    			  day1+=365;
    	  }
    	   for(i=0;i<y2;i++)
    	  {
    		  if(leap(i))
    			  day2+=366;
    		  else
    			  day2+=365;
    	  }
    	   printf("%d\n",(int)fabs(day1-day2)+1);
      }
    }
    

    C++ :

    #include<stdio.h>
    #include<math.h>
    
    int m[13][2]={0,0,
    			  31,31,
    			  28,29,
    		  	  31,31,
    			  30,30,
    			  31,31,
    			  30,30,
    			  31,31,
    			  31,31,
    			  30,30,
    			  31,31,
    			  30,30,
    			  31,31};
    
    int leap(int y)
    {
    	return (y%4==0&&y%100!=0)||(y%400==0);
    }
    
    int day(int Y,int M,int D)
    {
    	int k=0,i,d;
    	if(leap(Y))
    		k=1;
    	for(d=0,i=1;i<M;i++)
    		d+=m[i][k];
    	d+=D;
    	return d;
    }
    
    int main()
    {
    	int Y1,M1,D1,Y2,M2,D2,i,d1,d2;
    	while(scanf("%4d%2d%2d",&Y1,&M1,&D1)!=EOF)
    	{
    		scanf("%4d%2d%2d",&Y2,&M2,&D2);
    		d1=day(Y1,M1,D1);
    		d2=day(Y2,M2,D2);
    		for(i=0;i<Y1;i++)
    			if(leap(i))
    				d1+=366;
    			else
    				d1+=365;
    		for(i=0;i<Y2;i++)
    			if(leap(i))
    				d2+=366;
    			else
    				d2+=365;
    		printf("%d\n",(int)fabs(d1-d2)+1);
    	}
    	return 0;
    }
    

    Java :

    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		int[][] month = {{0,0}, {31,31}, {28,29}, {31,31}, {30,30}, {31,31}, {30,30}, {31,31}, {31,31}, {30,30}, {31,31}, {30,30}, {31,31}};
    		int time1, y1, m1, d1;
    		int time2, y2, m2, d2;
    		while (in.hasNext()) {
    			time1 = in.nextInt(); time2 = in.nextInt();
    			if (time1 > time2) {
    				int temp = time1;
    				time1 = time2;
    				time2 = temp;
    			}
    			y1 = time1/10000; m1 = time1%10000/100; d1 = time1%100;
    			y2 = time2/10000; m2 = time2%10000/100; d2 = time2%100;
    			int ans = 1;
    			while (y1<y2 || m1<m2 || d1<d2) {
    				d1++;
    				if (d1 == month[m1][isLeap(y1)]+1) {
    					m1++;
    					d1 = 1;
    				}
    				if (m1 == 13) {
    					y1++;
    					m1 = 1;
    				}
    				ans++;
    			}
    			System.out.println(ans);
    		}
    	}
    	static int isLeap(int year) {
    		if ((year%4 == 0 && year%100 != 0)||(year%400 == 0)) return 1;
    		else return 0;
    	}
    }
    

    Python :

    # coding=utf-8
    
    
    months=[31,28,31,30,31,30,31,31,30,31,30,31]
    months1=[31,29,31,30,31,30,31,31,30,31,30,31]
    
    def leap(year):
    	return ((year %4 ==0) and (year % 100 != 0)) or (year % 400 == 0)
    def calc():
    	date1 = int(input())
    	date2 = int(input())
    	if date1 == None or date2 == None:
    		exit()
    	if date1>date2:
    		tmp = date1
    		date1 = date2
    		date2 = tmp
    	y1 = date1//10000
    	y2 = date2//10000
    	m1 = date1 % 10000 // 100
    	m2 = date2 % 10000 // 100
    	d1 = date1 % 100
    	d2 = date2 % 100
    
    	res = 1
    	while (y1 < y2-1):
    		if(leap(y1)): res += 366 
    		else: res += 365
    		y1+=1
    
    	if y1 != y2:
    		if(leap(y1)): 
    			res += sum(months1[m1:])
    			res += months1[m1-1] - d1
    		else:  
    			res += sum(months[m1:])
    			res += months[m1-1] - d1
    		if(leap(y2)): 
    			res += sum(months1[:m2-1])
    		else:  
    			res += sum(months[:m2-1])
    	else:
    		if (m1 != m2):
    			if(leap(y1)): 
    				res +=sum(months1[m1:m2-1])
    				res += months1[m1-1]-d1
    			else:
    				res += sum(months[m1:m2-1])
    				res += months[m1-1]-d1
    		else:
    			res -= d1
    	res +=d2
    	print(res)
    
    while True:
    	calc()
    
    • 1

    信息

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