#9276: 解析參考


simultaneously (----------以上是高手------------)

學校 : 高雄市立新莊高級中學
編號 : 37268
來源 : [1.200.206.195]
最後登入時間 :
2018-12-01 11:50:33
a263. 日期差幾天 -- 板橋高中練習題 | From: [111.254.219.147] | 發表日期 : 2014-10-04 17:53

#include<cstdio>
void swap(int a[]){
  int temp=a[0];
  a[0]=a[1],a[1]=temp;     
}
int po(int x){
 if((x%4==0&&x%100!=0)||(x%400==0)) return 1;   
 else return 0;
 }
int re(int a,int b,int c){
   int x2=0; 
   if(a<8){
      if(a==2) x2=28+po(c)-b;       
     else if(a%2) x2=31-b;         
     else x2=30-b;
     }
     else{
     if(a%2==0) x2=31-b;         
     else x2=30-b;
     }       
    return x2; 
    }     
int bi(int a,int b,int c){
    int x1=0;
    for(int i=a+1;i<=12;i++)
{     if(i<8)
     {
      if(i==2) x1+=28+po(c);       
     else if(i%2) x1+=31;         
     else x1+=30;
     }
     else{
     if(i%2==0) x1+=31;         
     else x1+=30;}       
  x1+=re(a,b,c);
  return x1;
}
int main(){
    int a[2],b[2],c[2];
    while(~scanf("%d%d%d%d%d%d",&a[0],&b[0],&c[0],&a[1],&b[1],&c[1])){
      if(a[0]==a[1]){int x1,x2;
       x1=bi(b[0],c[0],a[0]);
       x2=bi(b[1],c[1],a[1]);
       printf("%d\n",(x1-x2>0?x1-x2:x2-x1));             
       }
      else{int x3=0;
    if(a[0]>a[1]) swap(a),swap(b),swap(c);       
      for(int i=a[0]+1;i<a[1];i++)
       x3+=365+po(i);
     x3+=(bi(b[0],c[0],a[0]))+(365+po(a[1])-bi(b[1],c[1],a[1]));   
     printf("%d\n",x3);
       } 
       }} //我的做法不是很好,但還是能AC,請厲害的高手指出還能做什麼改變

 
ZeroJudge Forum