您的位置:首页 > 其它

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

解题思路

画图找规律





#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: