这个题就是求一段线段上整数点的个数。然后完全不知道这个竟然是两个边的最大公约数、、、也就是相似三角形的个数,所以加上一个原有的点就是答案。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <iostream>
using namespace std;
long long int x1,x2,yy,y2,t;
long long int gcd(long long int a,long long int b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
int main()
{
scanf("%d",&t);
for(int i=1; i<=t; i++)
{
scanf("%lld%lld%lld%lld",&x1,&yy,&x2,&y2);
long long int ans=gcd(abs(x1-x2),abs(yy-y2));
printf("Case %d: %lld\n",i,ans+1);
}
return 0;
}
本文介绍了一个计算线段上整数点数量的方法,通过求取线段两端坐标差值的最大公约数来实现,最后加一得到答案。代码使用C++编写,并实现了输入输出案例。

621

被折叠的 条评论
为什么被折叠?



