- 最小公倍数和最大公约数问题
- 2014-08-15 15:40:55 @
编译成功
foo.pas(17,16) Warning: Variable "s" does not seem to be initialized
测试数据 #0: Accepted, time = 0 ms, mem = 820 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 820 KiB, score = 10
测试数据 #2: Accepted, time = 78 ms, mem = 820 KiB, score = 10
测试数据 #3: TimeLimitExceeded, time = 1015 ms, mem = 820 KiB, score = 0
测试数据 #4: Accepted, time = 78 ms, mem = 820 KiB, score = 10
TimeLimitExceeded, time = 1171 ms, mem = 820 KiB, score = 40
代码
var
x,y,a,b,i,j,k,s:longint;
begin
read(x,y);
if x=y then write(1)
else
for i:=x to y do
for j:=2*x to y do begin
a:=i;
b:=j;
repeat
k:=b mod a;
b:=a;
a:=k;
until k=0;
if (b=x) and (i*j/b=y) then
inc(s);
end;
write(s+1);
end.
6 条评论
-
Traveller_C LV 8 @ 2014-12-26 09:49:20
Block code
/*
Author: Traveller_C
PROG: vijos 1131
DATE: 2014.12.26
*/#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;
const int maxn = 100005;
const int maxm = 1000005;
typedef long long LL;int x, y;
LL sum, fac[maxn];LL gcd(LL x, LL y)
{
if (y == 0) return x;
else return gcd(y, x % y);
}int main()
{
scanf("%d%d", &x, &y);
sum = x * y; int num = 0;
for (int i = 1; i * i <= sum; i ++){
if (sum % i == 0)
fac[++ num] = i,
fac[++ num] = sum / i;
}int ans = 0;
for (int i = 1; i <= num; i += 2){
if (gcd(fac[i + 1], fac[i]) == x){
if (fac[i] == fac[i + 1]) ans += 1;
else ans += 2;
}
}printf("%d\n", ans);
} -
2014-12-26 09:46:26@
Block code
/*
Author: Traveller_C
PROG: vijos 1131
DATE: 2014.12.26
*/#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;
const int maxn = 100005;
const int maxm = 1000005;
typedef long long LL;int x, y;
LL sum, fac[maxn];LL gcd(LL x, LL y)
{
if (y == 0) return x;
else return gcd(y, x % y);
}int main()
{
scanf("%d%d", &x, &y);
sum = x * y; int num = 0;
for (int i = 1; i * i <= sum; i ++){
if (sum % i == 0)
fac[++ num] = i,
fac[++ num] = sum / i;
}int ans = 0;
for (int i = 1; i <= num; i += 2){
if (gcd(fac[i + 1], fac[i]) == x){
if (fac[i] == fac[i + 1]) ans += 1;
else ans += 2;
}
}printf("%d\n", ans);
} -
2014-12-26 09:45:24@
Block Code
/*
Author: Traveller_C
PROG: vijos 1131
DATE: 2014.12.26
*/#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;
const int maxn = 100005;
const int maxm = 1000005;
typedef long long LL;int x, y;
LL sum, fac[maxn];LL gcd(LL x, LL y)
{
if (y == 0) return x;
else return gcd(y, x % y);
}int main()
{
scanf("%d%d", &x, &y);
sum = x * y; int num = 0;
for (int i = 1; i * i <= sum; i ++){
if (sum % i == 0)
fac[++ num] = i,
fac[++ num] = sum / i;
}int ans = 0;
for (int i = 1; i <= num; i += 2){
if (gcd(fac[i + 1], fac[i]) == x){
if (fac[i] == fac[i + 1]) ans += 1;
else ans += 2;
}
}printf("%d\n", ans);
} -
2014-11-22 23:55:58@
#include<stdio.h>
int main()
{
int yue(int x,int y);
int x0,y0,p,n=0;
scanf("%d %d",&x0,&y0);
for (p=x0;p<=y0;p++)
if (p%x0==0 && y0%p==0)
if (yue(p,x0*y0/p)==x0)
n++;
printf("%d\n",n);
}
int yue(int x,int y)
{
int i,j,k=1;
if (x>y){i=x;j=y;}
else {i=y;j=x;}
k=i%j;
while (k!=0)
{
i=j;j=k;
k=i%j;
}
return j;
}
优化一下搜索方式就能过了 -
2014-08-19 10:14:18@
搜索
-
2014-08-18 11:11:15@
哈哈哈哈哈,人品!!!
- 1