【模拟,时针分针秒针两两夹角】【没有跳坑好兴奋】hdu - 5387 (多校#8 1008)
算是最好写的一道题了吧,最近模拟没手感,一次过也是很鸡冻o(* ̄▽ ̄*)o
注意事项都在代码里,没有跳坑也不清楚坑点在哪~
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<vector>
#include<cmath>
#include<sstream>
#include<iostream>
using namespace std;
const double eps = 1e-;
int hh, mm, ss;
int gcd(int a, int b)
{
return b == ? a : gcd(b, a%b);
}
void sub(int a, int b, int c, int d)
{ //分数相减(a/b - c/d = (ad-bc)/bd),各种凌乱的特判,注意取绝对值输出
if(c == ) //c/d = 0,直接输出a/b
{
if(b == ) printf("%d", abs(a));
else printf("%d/%d", abs(a), abs(b));
return;
}
int t1 = b*d, t2 = a*d - b*c;
if(t1 == || t2 == ) //分子或分子为0,直接输出0
{
printf("");
return;
}
int t12 = gcd(t1, t2); //化简
int tt1 = t1/t12;
int tt2 = t2/t12;
if(tt1 == ) printf("%d", abs(tt2));
else printf("%d/%d", abs(tt2), abs(tt1));
} void get_ang(double a1, double a2, int t11, int t12, int t21, int t22)
{
if(fabs(a1 - a2) < eps) //两角相等
{
printf("");
return ;
}
if(fabs(a1 - a2) > ) //注意两角相差大于180度
{
if(a1 > a2)
{
t11 = t11 - *t12; //大角减360度,然后二者相减去绝对值,这里动手画一下就清楚了
sub(t11, t12, t21, t22);
}
else
{
t21 = t21 - *t22;
sub(t21, t22, t11, t12);
}
}
else if(fabs(a1 - a2) <= )
{
if(a1 > a2)
sub(t11, t12, t21, t22);
else
sub(t21, t22, t11, t12);
}
}
void solve()
{
int h = hh* + mm* + ss; //化成秒为单位
int m = mm* + ss;
int s = ss;
int ansh1, ansh2, ansm1, ansm2, anss1, anss2; //主要化简成分数计算
int gh, gm; //时针化为秒数与120的最大公约数,分针化为秒数与10的最大公约数
double ah, am, as; //用double比较三针走过的度数大小
if(h)
{
gh = gcd(h, );
ansh1 = h/gh, ansh2 = /gh;
ah = (double)ansh1/ansh2;
}
else
{
ansh1 = , ansh2 = ;
ah = 0.0;
}
if(m)
{
gm = gcd(m, );
ansm1 = m/gm, ansm2 = /gm;
am = (double)ansm1/ansm2;
}
else
{
ansm1 = , ansm2 = ;
am = 0.0;
}
if(s)
{
anss1 = s*, anss2 = ;
as = (double)anss1/anss2;
}
else
{
anss1 = , anss2 = ;
as = 0.0;
}
get_ang(ah, am, ansh1, ansh2, ansm1, ansm2); printf(" ");
get_ang(ah, as, ansh1, ansh2, anss1, anss2); printf(" ");
get_ang(am, as, ansm1, ansm2, anss1, anss2); printf(" ");
}
int main()
{
int T;
scanf("%d", &T);
getchar();
while(T--)
{
string str;
cin >> str;
for(int i = ; i < str.length(); i++)
if(str[i] == ':')
str[i] = ' '; //方便用stringstream,用这个耗时会比较大,处理方法随意~ stringstream SS(str);
SS >> hh;
SS >> mm;
SS >> ss;
if(hh == && (mm || ss)) hh -= ;
else if(hh > ) hh -= ; //24小时制转为12小时
solve();
printf("\n");
}
return ;
}
hdu-5387
【模拟,时针分针秒针两两夹角】【没有跳坑好兴奋】hdu - 5387 (多校#8 1008)的更多相关文章
- 时针分针角度问题c语言解法
#include <stdio.h> //时针一小时走30度 double hour_per_hour_angle = 30.0; //先算出时针和分钟 一分钟内 分别走多少度数 //时针 ...
- Android_模拟时钟内时针、分针触摸转动
最近实现了android里的一个机能,在activity里面画了一个模拟的时针,然后触摸上面的时针跟分针可以实现调时间的功能. 其实,说起原来来还是挺简单的,但是我花了将近一周的时间才全部实现,有点惭 ...
- uva 579 ClockHands 几何初接触 求时针与分针的夹角
貌似是第一次接触几何题... 求时针与分针的夹角,这不是小学生的奥数题么.我小时候也想过这问题的. 每过一小时时针走1/12*360=30度,每过一分钟时针走1/60*30=0.5度,分针走1/60* ...
- Codeforces Round #164 (Div. 2) A. Games【暴力/模拟/每个球队分主场和客场,所有球队两两之间进行一场比赛,要求双方球服颜色不能相同】
A. Games time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- golang 实现求两向量夹角
type Vector3 struct { X float64 `json:"x"` Y float64 `json:"y"` Z float64 `json: ...
- 分针网—每日分享: 怎么轻松学习JavaScript
js给初学者的印象总是那么的"杂而乱",相信很多初学者都在找轻松学习js的途径. 我试着总结自己学习多年js的经验,希望能给后来的学习者探索出一条"轻松学习js之路& ...
- 分针网—IT教育:作为PHP开发人员容易忽视的几个重点
无论是学习什么样的一个开发.ASP开发.java开发.当学习还不是很久的时候,一般都是不知道它们的精华是在哪里,而现在很多的php程序员也是不知道PHP的精华所在,为什么perl在当年在商界如此的出名 ...
- 分针网—IT教育:使用CSS3制作导航条和毛玻璃效果
导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生一些.简单的说,毛玻璃其实就是让图片或者背景使用相应的方法进行模糊处理.这种效果对用户来说是十分具有视觉冲击力的.本次分享的主题: ...
- 分针网—IT教育:调皮的JavaScript
JavaScript是一门有趣的语言,不仅有趣而且调皮,不同的内核的浏览器在解析的时候表现会有些差异,今天主要是抛砖引玉,和大家一起讨论一些在实际开发中比较常见但同时可能并没有过于在意的JavaScr ...
随机推荐
- HDU 5620 KK's Steel (斐波那契序列)
KK's Steel 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/J Description Our lovely KK ha ...
- My97DatePicker的calendar.js的反混淆
eval(string)函数 <script> eval(function(p, a, c, k, e, d) { p = 'function p(){console.log(" ...
- POJ 3668 Game of Lines (暴力,判重)
题意:给定 n 个点,每个点都可以和另一个点相连,问你共有多少种不同斜率的直线. 析:那就直接暴力好了,反正数也不大,用set判重就好,注意斜率不存在的情况. 代码如下: #include <c ...
- oracle 11g 之 result cache
oracle 11g 之 result cache 今天是2013-10-12,打算最近时间研究一下shared pool的相关原理以及awr报告分析.今天学习一下在oracle 11g shared ...
- js 限定上传文件大小 类型
方案1 :限定大小 <html> <head> <script type="text/javascript"> var isIE = /ms ...
- 【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 在学习Android的过程中,Intent是我们最常用Android用于进程内或进 ...
- 使用C#: 自动切换鼠标的左右手习惯
不知道我得的是鼠标手,还是肩周炎. 长时间右手(或者左手)使用鼠标的话,那只胳膊便会不自在. 于是便有了切换鼠标主次要键的需求. [控制面板->鼠标]有更改它的设置,可点来点去让我觉得不够方便. ...
- [Mapreduce]eclipse下写wordcount
上传两个文件到hdfs上的input目录下 代码例如以下: import java.io.IOException; import java.util.StringTokenizer; import o ...
- MySQL 子查询 EXISTS 和 NOT EXISTS(转)
MySQL EXISTS 和 NOT EXISTS 子查询 MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT ... FROM table WHERE EXISTS ...
- 小米2及其他Android手机无法连接mac解决方案
一般的android连接mac 很方便不用安装驱动就可以啦,可是不知道为什么二般情况下有的android手机(小米2,华为等)就是连接不上,下来就说说二般情况下如何连接. 1.关于本机-->更多 ...