链接:http://vjudge.net/problem/viewProblem.action?id=49409

题意:给一个奇怪的能够记录N小时内时间的表(生活中的表是12小时计时的)。

而且给出一个当前时间,求下一个出现的秒针恰巧在时针和分针中间的情况的时间,输出整数的小时和分钟还实用分数表示的秒。

思路:

首先计算时针分针秒针当前转动角度。记整个表盘总角度为1.

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvb29vb29vb29l/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvb29vb29vb29l/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

设经过了ss时间后,出现题目中要求的情况。

则可列出式子:

将上述带入,化简得:

我们要取的是k=1时候的情况。假设k=1时三个针恰好重叠,那就取k=2时,从小到大向上取。当中的小问题就在于怎样分数表示秒。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<cstdlib>
#include<queue>
#include<stack>
#include<vector>
#include<ctype.h>
#include<algorithm>
#include<string>
#define PI acos(-1.0)
#define maxn 10005
#define INF 0x7fffffff
typedef long long ll;
using namespace std;
int gcd(int x,int y)
{
return y? gcd(y,x%y):x;
}
int main()
{
int H,h,m,s,ans_h,ans_m,ans_s;
while(scanf("%d%d%d%d",&H,&h,&m,&s)&&!(!H&&!h&&!m&&!s))
{
int hh=3600*h+60*m+s;
int mm=60*m*H+s*H;
int ss=60*s*H;
int K=3600*H;
int cmp=mm+hh-ss*2;
cmp=(cmp%K+K)%K;
int aa=119*H-1;
while(1)
{
int a=aa;
int c=cmp;
int t=gcd(a,c);
a/=t;c/=t;
ans_h=(h+(m+(a*s+c)/(a*60))/60)%H;
ans_m=(m+(a*s+c)/(a*60))%60;
ans_s=(a*s+c)%(a*60);
if((3600*ans_h+60*ans_m)*a+ans_s!=60*ans_m*a*H+ans_s*H)
{
printf("%d %d %d %d\n",ans_h,ans_m,ans_s,a);
break;
}
cmp+=K;
}
}
return 0;
}

最新文章

  1. 类型转换器(InitBinder 初始化绑定器)
  2. Codeforces525E Anya and Cubes(双向搜索)
  3. Java GC收集器配置说明
  4. Android系列之网络(二)----HTTP请求头与响应头
  5. MSP下载方式
  6. 通过 监听器获取sessionId
  7. 概率图模型之有向图与无向图之间的关系 I map D map perfect map(完美图) 概念
  8. 从奥鹏一个答案提取页面 看jquery知识点
  9. 创建UIButton
  10. 04747_Java语言程序设计(一)_第2章_运算和语句
  11. Mozilla推荐的CSS书写顺序
  12. iOS CAEmitterLayer 实现粒子发射动画效果
  13. angular中要注意的指令
  14. [UOJ455][UER #8]雪灾与外卖——堆+模拟费用流
  15. Sublime Text 输入法跟随光标
  16. LINUX系统配置
  17. paymob QB冲值接口
  18. go中for循环使用多个变量避坑
  19. RESET MASTER和RESET SLAVE使用场景和说明,以及清除主从同步关系
  20. Philosopher

热门文章

  1. docker小知识
  2. UVa 1601 || POJ 3523 The Morning after Halloween (BFS || 双向BFS &amp;&amp; 降维 &amp;&amp; 状压)
  3. [BZOJ3456]城市规划:DP+NTT+多项式求逆
  4. 同一个tomcat部署多个项目
  5. 9.并发编程--ThreadLocal
  6. Linux shell - shift命令用法(转载)
  7. 2018-2019-2 20165235《网络对抗技术》Exp7 网络欺诈防范
  8. java8 stream初试,map排序,list去重,统计重复元素个数,获取map的key集合和value集合
  9. Json C#解析
  10. php curl http digest