CodeForces 630 M. Turn(水~)
2016-02-21 10:50
274 查看
Description
定义相机的角度为与竖直方向夹角,在竖直方向右边为负,左边为正,相机每次只能顺时针旋转90度,问相机最少需要旋转多少次才能与竖直方向夹角最小
Input
一个整数n表示相机初始状态角度(-10^18<=n<=10^18)
Output
输出相机最少需要旋转多少次才能与竖直方向夹角最小
Sample Input
60
Sample Output
1
Solution
首先将角度换成正值n=(n%360+360)%360,如果n>=315,那么再旋转只会让相机更加偏离竖直方向,所以此时不需要旋转;如果n<315,首先需要旋转n/90次使得相机与竖直方向夹角小于90度,如果此时角度大于45度,那么再旋转一次后相机与竖直方向夹角会更小,如果角度不大于45度,那么同n>=315的情况不需要旋转,所以需要旋转n/90+(n%90-1)/45次
Code
定义相机的角度为与竖直方向夹角,在竖直方向右边为负,左边为正,相机每次只能顺时针旋转90度,问相机最少需要旋转多少次才能与竖直方向夹角最小
Input
一个整数n表示相机初始状态角度(-10^18<=n<=10^18)
Output
输出相机最少需要旋转多少次才能与竖直方向夹角最小
Sample Input
60
Sample Output
1
Solution
首先将角度换成正值n=(n%360+360)%360,如果n>=315,那么再旋转只会让相机更加偏离竖直方向,所以此时不需要旋转;如果n<315,首先需要旋转n/90次使得相机与竖直方向夹角小于90度,如果此时角度大于45度,那么再旋转一次后相机与竖直方向夹角会更小,如果角度不大于45度,那么同n>=315的情况不需要旋转,所以需要旋转n/90+(n%90-1)/45次
Code
#include<cstdio> #include<iostream> using namespace std; typedef long long ll; ll n; int main() { while(~scanf("%I64d",&n)) { n=(n%360+360)%360; if(n>=315)printf("0\n"); else printf("%I64d\n",n/90+(n%90-1)/45); } return 0; }
相关文章推荐
- 项目记录20-- 原来c#框架mediator改lua--01
- 信号完整性第二章小结
- android四大组件之broadcast
- spring与springmvc整合
- 【从零学习Python】Ubuntu14.10下Python开发环境配置
- C语言中的enum(枚举)使用方法
- Altium Designer 8.0不为人知的27个技巧【转】
- 【装载】java异常机制
- android四大组件之Activity
- POJ 1845 sumdiv 数论 A^B 的所有约数之和
- Struts2 DMI 动态方法调用
- leetcode - One Edit Distance
- 用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误
- 可以用阻抗描述的四类基本的信号完整性的问题
- MySQL bigint(20)是什么意思?
- json数据格式
- 在ubuntu下安装phpmyadmin
- Monad transformers
- verilog与C语言的6点重大区别
- 数据结构基础之图的遍历