Revenge of ex-Euclid
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 877 Accepted Submission(s): 531
Total Submission(s): 877 Accepted Submission(s): 531
Problem Description
In arithmetic and computer programming, the extended Euclidean algorithm is an extension to the Euclidean algorithm, which computes, besides the greatest common divisor of integers a and b, the coefficients of Bézout's identity, that is integers x and y such that ax + by = gcd(a, b).
---Wikipedia
Today, ex-Euclid takes revenge on you. You need to calculate how many distinct positive pairs of (x, y) such as ax + by = c for given a, b and c.
---Wikipedia
Today, ex-Euclid takes revenge on you. You need to calculate how many distinct positive pairs of (x, y) such as ax + by = c for given a, b and c.
Input
The first line contains a single integer T, indicating the number of test cases.
Each test case only contains three integers a, b and c.
[Technical Specification]
1. 1 <= T <= 100
2. 1 <= a, b, c <= 1 000 000
Each test case only contains three integers a, b and c.
[Technical Specification]
1. 1 <= T <= 100
2. 1 <= a, b, c <= 1 000 000
Output
For each test case, output the number of valid pairs.
Sample Input
2 1 2 3 1 1 4
Sample Output
1 3
题意:
寻找ax+by = c有多少组解!
寻找ax+by = c有多少组解!
#include<bits/stdc++.h>
#include <ctime>
using namespace std;
typedef long long ll;
const int MAXN = 1 * 1e5 + 500;
const ll M = 1e9 + 7;
int main()
{
///clock_t start_time = clock();
///clock_t end_time = clock();
///cout << "Running time is: " << static_cast<double>(end_time - start_time) / CLOCKS_PER_SEC * 1000 << "ms" << endl;
std::ios::sync_with_stdio(false);
int t;
cin >> t;
while (t--)
{
int a, b, c, cnt = 0;
cin >> a >> b >> c;
for (int x = 1; x * a < c; x++)
{
if ((c - a*x) % b == 0)
{
cnt++;
}
}
cout << cnt << endl;
}
return 0;
}