版权声明:转载请注明出处。 https://blog.csdn.net/u014427196/article/details/40454323
第二次做这个题了...
#include <iostream>
#include <algorithm>
#include <cmath>
#include <stdio.h>
using namespace std;
long long gcd(long long a, long long b)
{
long long r = a%b;
while (r)
{
a = b;
b = r;
r = a%b;
}
return b;
}
long long arr[200010] = { 0 };
int main()
{
int t;
scanf ("%d",&t);
while (t--)
{
long long a, b;
long long c;
scanf("%I64d%I64d%I64d",&a,&b,&c);
long long d = gcd(a, b);
int counter = 0;
long long i;
for (i = 1; i*i <=d ; ++i)
{
if (d%i == 0)
{
arr[counter++] = i;
if (i*i!=d)
{
arr[counter++] = d / i;
}
}
}
sort(arr, arr + counter);
if (c > counter)
{
printf("-1\n");
}
else
{
printf("%I64d\n",arr[counter - c]);
}
}
return 0;
}
留言