博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu5387 Clock
阅读量:6818 次
发布时间:2019-06-26

本文共 2294 字,大约阅读时间需要 7 分钟。

Problem Description
Give a time.(hh:mm:ss)。you should answer the angle between any two of the minute.hour.second hand
Notice that the answer must be not more 180 and not less than 0
 

Input
There are 
T
(1T104) test cases
for each case,one line include the time
0hh<24,
0mm<60,
0ss<60
 

Output
for each case,output there real number like A/B.(A and B are coprime).if it's an integer then just print it.describe the angle between hour and minute,hour and second hand,minute and second hand.
 

Sample Input
 
4 00:00:00 06:00:00 12:54:55 04:40:00
 

Sample Output
 
0 0 0 180 180 0 1391/24 1379/24 1/2 100 140 120
这是一道简单模拟。但我做了挺长时间,果然模拟题还是非常弱啊。。这里注意尽量不要涉及小数,由于会影响精度。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int c[10][4],e,f;int gcd(int a, int b){ return a == 0 ? b : gcd(b % a, a); } void jian(int a,int b,int c,int d){ int i,j,t1,t2,t; t1=a*d-b*c; t2=b*d; t=gcd(t2,t1); e=t1/t; f=t2/t;}int main(){ int h,m,t,s,n,i,j,T,x2,y2,x3,y3; char c1,c2; double b1,b2,b3; scanf("%d",&T); while(T--) { scanf("%d:%d:%d",&h,&m,&s); if(h>=12)h-=12; t=h*3600+m*60+s; c[1][1]=t; c[1][2]=120; c[2][1]=m*60+s; c[2][2]=10; c[3][1]=s*6; c[3][2]=1; e=f=0; jian(c[1][1],c[1][2],c[2][1],c[2][2]); if(e*f>0){ e=f=0; jian(c[1][1],c[1][2],c[2][1],c[2][2]); if(e>f*180)jian(360,1,e,f); if(f==1)printf("%d ",e); else printf("%d/%d ",e,f); } else{ e=f=0; jian(c[2][1],c[2][2],c[1][1],c[1][2]); if(e>f*180)jian(360,1,e,f); if(f==1)printf("%d ",e); else printf("%d/%d ",e,f); } e=f=0; jian(c[1][1],c[1][2],c[3][1],c[3][2]); if(e*f>0){ e=f=0; jian(c[1][1],c[1][2],c[3][1],c[3][2]); if(e>f*180)jian(360,1,e,f); if(f==1)printf("%d ",e); else printf("%d/%d ",e,f); } else{ e=f=0; jian(c[3][1],c[3][2],c[1][1],c[1][2]); if(e>f*180)jian(360,1,e,f); if(f==1)printf("%d ",e); else printf("%d/%d ",e,f); } e=f=0; jian(c[2][1],c[2][2],c[3][1],c[3][2]); if(e*f>0){ e=f=0; jian(c[2][1],c[2][2],c[3][1],c[3][2]); if(e>f*180)jian(360,1,e,f); if(f==1)printf("%d ",e); else printf("%d/%d ",e,f); } else{ e=f=0; jian(c[3][1],c[3][2],c[2][1],c[2][2]); if(e>f*180)jian(360,1,e,f); if(f==1)printf("%d ",e); else printf("%d/%d ",e,f); } printf("\n"); } return 0;}

转载地址:http://sabzl.baihongyu.com/

你可能感兴趣的文章
C#实战--对齐输出
查看>>
nginx下使用memcache
查看>>
利用反射给类中方法加钩子
查看>>
【PHP面向对象】连贯操作实现
查看>>
POJ3685 Matrix(嵌套二分)
查看>>
Qt5.5.1+vs2013
查看>>
[转载] Linux关闭Tomcat为什么要用kill, 而不是shutdown.sh
查看>>
第三十课、Qt中的文本编辑组件------------------狄泰软件学院
查看>>
Android中的通知—Notification
查看>>
Oracle通过SCN做增量备份修复DG
查看>>
几个获取Windows系统信息的Delphi程序
查看>>
Mysql安装出现=========== install/remove of the Service Denied
查看>>
SQL如何修改被计算字段引用的字段类型
查看>>
HTTPS加密原理
查看>>
javascript Ajax 基本使用和封装
查看>>
logger日志的几个方法
查看>>
恼人的设计模式(转载)
查看>>
expect模块的使用,主要没装包折腾一晚上
查看>>
awk多列匹配
查看>>
用户行为日志概述
查看>>