【模拟,时针分针秒针两两夹角】【没有跳坑好兴奋】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 ...
随机推荐
- Struts2在Action中访问WEB资源
什么是WEB资源? 这里所说的WEB资源是指:HttpServletRequest, HttpSession, ServletContext 等原生的 Servlet API. 为什么需要访问WEB资 ...
- JSF 2 textarea example
In JSF, you can use the <h:inputTextarea /> tag to render a HTML textarea field. For example, ...
- log4j中的MDC和NDC
NDC和MDC NDC(Nested Diagnostic Context)和MDC(Mapped Diagnostic Context)是log4j种非常有用的两个类,它们用于存储应用程序的上下文信 ...
- POJ 2481 Cows (数组数组求逆序对)
题目链接:http://poj.org/problem?id=2481 给你n个区间,让你求每个区间被真包含的区间个数有多少,注意是真包含,所以要是两个区间的x y都相同就算0.(类似poj3067, ...
- DotNetZip封装类
DotnetZip是一个开源类库,支持.NET的任何语言,可很方便的创建,读取,和更新zip文件.而且还可以使用在.NETCompact Framework中. 下载地址在这里: http://d ...
- Intel® RealSense™ SDK Architecture
In this article, we highlight some of the key changes that you can expect to see in the Intel RealSe ...
- 浅谈IT员工管理
本人尽管还不是管理人员,但也管理过学弟们(不是同校.仅仅是工作中同事,为了好称呼叫学弟).也被管理着,工作也好多年了.今天又感而发.想来谈谈假设管理好员工(在此声明,我仅仅是发表个人意见哦.不要喷.哈 ...
- Educational Codeforces Round 1 D. Igor In the Museum bfs 并查集
D. Igor In the Museum Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/598 ...
- Java多线程模式(二)
Guarded Suspension Pattern 该模式描述的是当一个线程在执行某个操作时,但由于其他资源还没有准备好,需要等待,那么就等待资源准备好才开始自己的操作.我们直接看代码例子 ...
- 内核映像的形成 —— KBuild体系
1. http://blog.csdn.net/yunsongice/article/details/6046537 2. http://blog.csdn.net/yunsongice/articl ...