博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个钟表问题。
阅读量:4567 次
发布时间:2019-06-08

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

钟表问题解决思路:

以秒针的转动的角度, 计算分针与时针转过的角度。 即: 模拟现实的场景。

《1》

#include
#include
#include
#include
using namespace std;vector
v[5000000];void Print(int x){ printf("%02d:%02d:%02d\n", x/3600, x/60%60, x%60);}int MOD(long long x){ x%=12000*360; if(x<0) x+=12000*360; if(x>12000*180) x=12000*360-x; return x;}void solve(){ long long h = 0; long long m = 0; for(int i=0; i<12*60*60; i+=10) { v[MOD(h-m)].push_back(i); h+=1000;//十秒钟, 时针走过的角度(放大的) m+=12000; }}int main(){ solve(); int x; while(scanf("%d", &x)!=EOF) { for(int i=0; i

看到另一种精简的解法:

#include
#include
#include
using namespace std;int main(){ int x; while(cin>>x) { for(int h=0; h<12; ++h) for(int m=0; m<60; ++m) for(int s=0; s<60; s+=10) { int a1=h*360000+m*6000+s*100; int a2=m*72000+s*1200; if(min(abs(a1-a2),360*12000-abs(a1-a2))==x) printf("%02d:%02d:%02d\n",h,m,s); } } return 0;}

 

 

《2》

#include
#include
#include
#include
using namespace std;const int MAXN = 12*60*60;double hm, hs, ms, T_hm, T_hs, T_ms;void init(){ double h, m, s; h=1.0/120; m=1.0/10; s=6; hm=m-h; hs=s-h; ms=s-m; T_hm=360/hm; T_hs=360/hs; T_ms=360/ms;}double Max(double a, double b, double c){ return max(max(a, b), c);}double Min(double a, double b, double c){ return min(min(a, b), c);}int main(){ init(); double n; while(scanf("%lf", &n)!=EOF) { if(n<0) break; double i, j, k, a[6], p, q, ans = 0; a[0]=n/hm; a[1]=n/hs; a[2]=n/ms; a[3]=(360-n)/hm; a[4]=(360-n)/hs; a[5]=(360-n)/ms; for(i=0; i<=1.0*MAXN; i+=T_hm) { for(j=0; j<=1.0*MAXN; j+=T_hs) { if(j+a[1]>i+a[3]) break; if(i+a[0]>j+a[4]) continue; for(k=0; k<=1.0*MAXN; k+=T_ms) { if(k+a[2]>i+a[3]||k+a[2]>j+a[4])break; if(i+a[0]>k+a[5]||j+a[1]>k+a[5])continue; p=Max(i+a[0],j+a[1],k+a[2]);//在这三个时间段刚好完成分离n度,所以取最大值才能保证全都分离n以上 q=Min(i+a[3],j+a[4],k+a[5]);//在这三个时间段刚好完成合并n度,所以取最小值才能保证全都未合并到n以内 if(q>p) ans+=q-p; } } } printf("%.3lf\n", 100.0*ans/MAXN); } return 0;}

 

转载于:https://www.cnblogs.com/acm1314/p/4621707.html

你可能感兴趣的文章
Android仿腾讯应用宝 应用市场,下载界面, 有了进展button
查看>>
安卓|五大逆向软件下载
查看>>
5 OK6410裸机调试(不用Jlink)
查看>>
“模板”学习笔记(5)-----编译器在处理函数模板的时候都干了啥
查看>>
教你用shell写CGI程序
查看>>
窗口 对话框 Pop Dialog 示例
查看>>
ubuntu(centos) server安装vmware tools
查看>>
数据结构之最大不重复串
查看>>
为什么要配置sdk-tools/platform-toools?
查看>>
自己动手开发更好用的markdown编辑器-07(扩展语法)
查看>>
maven dependency:tree中反斜杠的含义
查看>>
队列的循环队列
查看>>
程序中的日期格式
查看>>
大众点评CAT错误总结以及解决思路
查看>>
从0开始学爬虫3之xpath的介绍和使用
查看>>
Shell成长之路
查看>>
vim下正则表达式的非贪婪匹配
查看>>
一个python的计算熵(entropy)的函数
查看>>
spring源码学习——spring整体架构和设计理念
查看>>
模拟window系统的“回收站”
查看>>