【模拟,时针分针秒针两两夹角】【没有跳坑好兴奋】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 ...
随机推荐
- ocp 1Z0-051 106-140题解析
106. Examine the data inthe LIST_PRICE and MIN_PRICE columns of the PRODUCTS table: LIST_PRICE MIN_P ...
- 数据库防sql注入
- POJ1328Radar Installation(贪心)
对于每一个点,可以找到他在x轴上的可行区域,这样的话就变为了对区间的贪心. #include<iostream> #include<stdio.h> #include<s ...
- UVaLive 6628 Grachten (水题,数学)
题意:给定一个平面图形并且且给了几条连,求一条. 析:简单么,三角形相似,很简单就AC. 代码如下: #pragma comment(linker, "/STACK:1024000000,1 ...
- 关于cocoapods添加静态库的奇葩配置
不多说,直接上代码 当引入这个静态库时,一开始死活在编辑时找不到这个静态库. 直到看到这个贴子:http://stackoverflow.com/questions/19189463/cocoapod ...
- 计算两个日期相隔的天数(jodd)
public static void main(String[] args) throws ParseException { System.out.println(TimeUtil.dayOfYear ...
- BZOJ 3505: [Cqoi2014]数三角形 数学
3505: [Cqoi2014]数三角形 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- 怎样在osg中动态的设置drawable的最近最远裁剪面
// draw callback that will tweak the far clipping plane just // before rendering a drawable. s ...
- Base64 图片转换工具
以前在写asp的后台的时候,有一个上传功能是必须的,那时候进行的图片预览(未上传前)其实就是获取本地的图片路径来显示图片,但是随着HTML5的出现,可以把图片通过编码来实现预览. 在雅虎的36条速度优 ...
- 使用sql生成UUID
在SQLServer中使用该sql语句可以生成GUID:select cast(NEWID() as varchar(36)) as uuid 通过一下语句将GUID中的'-'字符去掉: select ...