HDU 5705 Clock (暴力+技巧)
2016-07-29 21:06
281 查看
题意:给一个当前时间和一个角度,要求输出时针和分针成当前角度的一个最近时刻
首先我们推算出,秒针每走1°,分针走1/10°,时针走1/120°,所以干脆全部乘120,得到120->12->1,因此我们把120当作1°,所以只要将360*120当作秒针走一周的度数就可以处理,这样处理的优点是排除误差
接下来就可以暴力求解出几秒后可以得到解,因为我们对度数处理过,所以每过1s,时针度数+1,分针度数+12,判断一下当前锁形成的角度即可
代码如下
首先我们推算出,秒针每走1°,分针走1/10°,时针走1/120°,所以干脆全部乘120,得到120->12->1,因此我们把120当作1°,所以只要将360*120当作秒针走一周的度数就可以处理,这样处理的优点是排除误差
接下来就可以暴力求解出几秒后可以得到解,因为我们对度数处理过,所以每过1s,时针度数+1,分针度数+12,判断一下当前锁形成的角度即可
代码如下
#include<cstdio> #include<algorithm> using namespace std; int main() { int h,m,s; int cas=1; while(~scanf("%d:%d:%d",&h,&m,&s)) { int t; scanf("%d",&t); t*=120; int sum=h*3600+m*60+s; int hh=sum%(360*120); int mm=(sum*12)%(360*120); int ans=0; while(1) { hh=(hh+1)%(360*120); mm=(mm+12)%(360*120); ans++; if(abs(abs(hh-mm)-t)<=10) break; } int anss=(ans+s)%60; int ansm=((ans+s)/60+m)%60; int ansh=((((ans+s)/60+m)/60)+h)%12; printf("Case #%d: %02d:%02d:%02d\n",cas++,ansh,ansm,anss); } }
相关文章推荐
- 【HDU 5366】The mook jong 详解
- 【HDU 2136】Largest prime factor 详细图解
- 【HDU 1568】Fibonacci 数学公式 详解
- HDU 1568
- HDU1290
- HDU1568(Fobonacci公式)
- HDU ACM Step 2.2.2 Joseph(约瑟夫环问题)
- HDU 1405
- HDU 1297
- hdu 1205
- hdu 2087
- hdu 1016
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
- HDU 5592 ZYB's Premutation 线段树(查找动态区间第K大)
- HDU 5240 Exam (好水的题)
- HDU5237 Base64 大模拟
- HDU 1000
- HDU 1001
- HDU 1016 Prime Ring Problem
- HDU 1017 A Mathematical Curiosity