1429:ax+by=c
描述
在平面直角坐标系中有直线方程ax+by=c,已知a、b、c、d、e的值,问在-d<=x<=d且-e<=y<=e的范围内,有多少个整数坐标点满足方程?(整数坐标点指坐标的x值和y值均为整数)
输入
多组案例。一个正整数n,表示案例的数量。(n<=20)
每组案例由整数a、b、c和正整数d、e组成。(|a|<=10000,|b|<=10000,|c|<=10000,1<=d<=100000,1<=e<=100000)
输出
针对每组案例,输出一个整数,表示满足条件的整数坐标点数量。
每组案例输出完都要换行。
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while (n--)
{
int a, b, c, d, e;
long long int cnt = 0;
cin >> a >> b >> c >> d >> e;//ax+by=c
for (int x = -d; x <= d; x++)
{
int f = c - a * x;//by=c-ax
if (f == 0 && b == 0)//0*y==0
{
cnt = cnt + 2 * e + 1;
}
else if (b != 0 && f % b == 0 && f / b >= -e && f / b <= e)
{
cnt++;
}
}
cout << cnt << endl;
}
}