ACM复习(36)9521 射了多少 II
2018-03-11 22:12
477 查看
Description
大家都知道CS中的AWP可以一枪KO人家,最爽的就是没看到别人,但知道人家在墙后而一枪穿墙爆头击毙.
现在把CS地图定义为一个三维空间,你的位置在(x0,y0,z0),你不知道敌人的位置(除非有间谍),因此你想尽可能多的穿过地图上的格子.
但你不知道如何计算当他射向点(x1,y1,z1)(到x1,y1,z1停下来)的时候穿过了多少个格子,因此希望你这个强大的programmer帮忙
输入格式
输入中一共有两行
第一行是3个整数表示你的位置x0,y0,z0(1000>=x0,y0,z0>=0)
第二行是3个整数表示子弹停下的位置x1,y1,z1(1000>=x1,y1,z1>=0)
输出格式
输出只有一行
穿过的格子数(碰到不算穿过任何格子,要严格穿过)
输入样例
0 0 0
2 2 2
输出样例
2
大家都知道CS中的AWP可以一枪KO人家,最爽的就是没看到别人,但知道人家在墙后而一枪穿墙爆头击毙.
现在把CS地图定义为一个三维空间,你的位置在(x0,y0,z0),你不知道敌人的位置(除非有间谍),因此你想尽可能多的穿过地图上的格子.
但你不知道如何计算当他射向点(x1,y1,z1)(到x1,y1,z1停下来)的时候穿过了多少个格子,因此希望你这个强大的programmer帮忙
输入格式
输入中一共有两行
第一行是3个整数表示你的位置x0,y0,z0(1000>=x0,y0,z0>=0)
第二行是3个整数表示子弹停下的位置x1,y1,z1(1000>=x1,y1,z1>=0)
输出格式
输出只有一行
穿过的格子数(碰到不算穿过任何格子,要严格穿过)
输入样例
0 0 0
2 2 2
输出样例
2
解题思路
还记的 9505 射了多少 这题么?按照这题的思路再拿个魔方观察一下就可以得出相似的规律:#include<stdio.h> #include<math.h> int gcd(int a, int b); int main() { int x1, y1, z1, x2, y2, z2, dx, dy, dz; scanf("%d %d %d", &x1, &y1, &z1); scanf("%d %d %d", &x2, &y2, &z2); dx = fabs(x1 - x2); dy = fabs(y1 - y2); dz = fabs(z1 - z2); if(dx && dy &&dz) printf("%d\n", dx + dy + dz - gcd(dx, dy) - gcd(dx, dz) - gcd(dy, dz) + gcd(gcd(dx, dy), dz)); else printf("0\n"); return 0; } int gcd(int a, int b) { int r; while((r = a % b) != 0) { a = b; b = r; } return b; }
相关文章推荐
- ACM复习(8)1143 多少个Fibonacci数
- ACM复习(30)9505 射了多少
- Unique Binary Search Trees I&II——给定n有多少种BST可能、DP
- [2012山东省第三届ACM大学生程序设计竞赛]——Fruit Ninja II
- 36、重新复习html和css之二
- 1002 A + B Problem II [ACM刷题]
- 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛——Fruit Ninja II
- C 语言复习与提高---II. 表达式
- ACM复习(21)8626 原子量计数
- HDU ACM 2121 Ice_cream’s world II (无根最小树形图)
- 2013山东省第三届ACM省赛 Fruit Ninja II
- [ACM] FZU 2087 统计数边 (有多少边至少存在一个最小生成树里面)
- 第三届山东省ACM Fruit Ninja II
- 杭电ACM刷题(1):1002,A + B Problem II
- [置顶] ACM复习专项
- 第五届山东省ACM Hearthstone II(Dp)
- 山东省第六届ACM省赛题——BIGZHUGOD and His Friends II(塞瓦定理,二分求解方程)
- 36 - 翻转链表 II
- ACM STEP 1.1.2 A+B for Input-Output Practice (II)
- 杭电acm 1002 (A+B Problem II)