Pascal
有效耗时: 2484毫秒
测试结果1: 通过本测试点|有效耗时187ms
测试结果2: 通过本测试点|有效耗时172ms
测试结果3: 通过本测试点|有效耗时156ms
测试结果4: 通过本测试点|有效耗时172ms
测试结果5: 通过本测试点|有效耗时172ms
测试结果6: 通过本测试点|有效耗时172ms
测试结果7: 通过本测试点|有效耗时203ms
测试结果8: 通过本测试点|有效耗时203ms
测试结果9: 通过本测试点|有效耗时375ms
测试结果10: 通过本测试点|有效耗时672ms
program son;
uses math;
var
n,a0,a1,b0,b1:longint;
function gcd(a,b:longint):longint;
begin
if b=0 then exit(a);
exit(gcd(b,a mod b));
end;
function lcm(a,b:longint):longint;
var sum:longint;
begin
sum:=a div gcd(a,b)*b;
exit(sum);
end;
procedure work;
var i,ans,x:longint;
begin
read(a0,a1,b0,b1);
ans:=0;
for i:=1 to trunc(sqrt(b1)) do
begin
if(b1 mod i <>0)then continue;
if (gcd(i,a0)=a1)and(lcm(i,b0)=b1)then inc(ans);
x:=b1 div i;
if(x=i) then continue;
if (gcd(x,a0)=a1)and(lcm(x,b0)=b1)then inc(ans);
end;
writeln(ans);
end;
procedure readdata;
var i:longint;
begin
read(n);
for i:=1 to n do
work;
end;
begin
//init;
readdata;
//outit;
end.
C++
测试结果1: 通过本测试点|有效耗时78ms
测试结果2: 通过本测试点|有效耗时62ms
测试结果3: 通过本测试点|有效耗时47ms
测试结果4: 通过本测试点|有效耗时47ms
测试结果5: 通过本测试点|有效耗时47ms
测试结果6: 通过本测试点|有效耗时63ms
测试结果7: 通过本测试点|有效耗时109ms
测试结果8: 通过本测试点|有效耗时172ms
测试结果9: 通过本测试点|有效耗时719ms
测试结果10: 选手程序运行超过时限
#include<cstdio>
#include<cmath>
using namespace std;
int a,aa,b,bb,ans;
int gcd(int a,int b) { return b==0?a:gcd(b,a%b); }
int lcm(int a,int b) { return a/gcd(a,b)*b; }
void work()
{
scanf("%d%d%d%d",&a,&aa,&b,&bb);
ans=0;
for(int i=1;i<=(int)sqrt(bb);i++)
{
if(gcd(i,a)==aa && lcm(i,b)==bb) ans++;
int x=bb/i;
if(x!=i && gcd(x,a)==aa && lcm(x,b)==bb) ans++;
}
printf("%d\n",ans);
}
int main()
{
//freopen("son.in","r",stdin);
//freopen("son.out","w",stdout);
int groups;
scanf("%d",&groups);
for(int i=1;i<=groups;i++)
work();
return 0;
}