HDU 5387 Clock

分析:给你一个时间,让你输出3个时分,时秒,分秒的夹角。如果时间是hh(0<=hh<12),mm,ss,那么度数分别是s=6*ss; m=6*mm+ss/10; h=30*hh+mm/2+ss/120; 然后给每个角度都乘以120,这样得出来的角度都是整数了,用k先记录着,这样夹角除以k就行了。

# include <stdio.h>
# define abs(x) x>0?x:-(x);
  int gcd(int a,int b)
  {
      return b?gcd(b,a%b):a;
  }
  int main()
  {
      int i,k,t,hh,mm,ss,h,m,s,ans[4],g[4];
      scanf("%d",&t);
      while(t--)
      {
          scanf("%d:%d:%d",&hh,&mm,&ss);
          if(hh>=12)
            hh-=12;
          k=120;
          h=3600*hh+60*mm+ss;
          m=720*mm+12*ss;
          s=720*ss;
          ans[1]=abs(h-m);ans[2]=abs(h-s);ans[3]=abs(m-s);
          for(i=1;i<=3;i++)
            if(ans[i]>180*k)
              ans[i]=360*k-ans[i];
          for(i=1;i<=3;i++)
          {
              g[i]=gcd(ans[i],k);
              if(k/g[i]==1)
                printf("%d ",ans[i]/g[i]);
              else
                printf("%d/%d ",ans[i]/g[i],k/g[i]);
          }
          putchar('\n');
      }
      return 0;
  }


你可能感兴趣的:(ACM)