ACM复习(30)9505 射了多少
2018-02-09 14:23
423 查看
Description
大家都知道CS中的AWP可以一枪KO人家,最爽的就是没看到别人,但知道人家在墙后而一枪穿墙爆头击毙.
现在把CS地图定义为一个二维空间,你的位置在(x0,y0),你不知道敌人的位置(除非有间谍),因此你想尽可能多的穿过地图上的格子.
但你不知道如何计算当他射向点(x1,y1)(到x1,y1停下来)的时候穿过了多少个格子,因此希望你这个强大的programmer帮忙
输入格式
输入中一共有两行
第一行是2个整数表示你的位置x0,y0(1000>=x0,y0>=0)
第二行是2个整数表示子弹停下的位置x1,y1(1000>=x1,y1>=0)
输出格式
输出只有一行
穿过的格子数(碰到不算穿过任何格子,要严格穿过)
输入样例
0 0
2 2
输出样例
2
大家都知道CS中的AWP可以一枪KO人家,最爽的就是没看到别人,但知道人家在墙后而一枪穿墙爆头击毙.
现在把CS地图定义为一个二维空间,你的位置在(x0,y0),你不知道敌人的位置(除非有间谍),因此你想尽可能多的穿过地图上的格子.
但你不知道如何计算当他射向点(x1,y1)(到x1,y1停下来)的时候穿过了多少个格子,因此希望你这个强大的programmer帮忙
输入格式
输入中一共有两行
第一行是2个整数表示你的位置x0,y0(1000>=x0,y0>=0)
第二行是2个整数表示子弹停下的位置x1,y1(1000>=x1,y1>=0)
输出格式
输出只有一行
穿过的格子数(碰到不算穿过任何格子,要严格穿过)
输入样例
0 0
2 2
输出样例
2
解题思路
画图找规律#include <stdio.h> #include <math.h> int gcd(int a, int b); int main() { int x1, y1, x2, y2, dx, dy, total; scanf("%d %d", &x1, &y1); scanf("%d %d", &x2, &y2); dx = fabs(x1 - x2); dy = fabs(y1 - y2); if(!dx || !dy) total = 0; else total = dx + dy - gcd(dx, dy); printf("%d\n", total); return 0; } int gcd(int a, int b) { int r; while(b) { r = a % b; a = b; b = r; } return a; }
相关文章推荐
- ACM复习(36)9521 射了多少 II
- ACM复习(8)1143 多少个Fibonacci数
- ACM复习(40)10693 PKKJ的生日礼物
- ACM复习(47)11153 kill boss
- 9505 射了多少
- ACM基础算法复习(STL + DFS + BFS + 并查集 + 快速幂 + 欧几里得算法)
- ACM复习(25)8630 连线游戏
- ACM复习(11)8615 快乐
- day 30 awk复习
- [ACM]hdu 1002 A + B Problem II (复习大数相加)
- [ACM]hdu 1002 A + B Problem II (复习大数相加)
- 1091. Acute Stroke (30)--BFS数多少块儿
- ACM复习(43)10674 等差对
- ACM复习(18)8628 相亲
- 用十进制计算30!(30的阶乘),将结果转化成3进制进行表示的话,该进制下的结果末尾会有多少个0?
- 2015 acm icpc asia regional changchun 队内 模拟 + 背包复习 +Tire树
- http://acm.hdu.edu.cn/showproblem.php?pid=1540 更新节点,询问节点所在的位置有多少连续的区间
- ACM复习(35)9513 防空洞
- ACM: 图论题poj 1860 (没心情复习…
- ACM复习(20)8627 数独