TanJingWen2023 @ 2023-08-28 19:42:20
#include <iostream>
using namespace std;
//int l
int x, y;
int gcd(int a, int b)
{
if (a % b == 0) return b;
else return gcd(b, a % b);
}
int max(int a, int b)
{
return a > b ? a : b;
}
bool pd(int a, int b)
{
int l = gcd(a, b);
int temp = a * b;
temp = temp / l;
if(l==x&&temp==y)
return true;
return false;
}
void doing()
{
//int x, y;
cin >> x >> y;
int count_=0;
if(pd(x,y))
count_ += 2;
int m = max(x, y)/2;
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= m; j++)
{
if (i != j &&i<j)
{
if (i<j&&pd(i, j))
count_ += 2;
}
}
}
cout << count_;
}
int main()
{
doing();
return 0;
}
这里我用的是辗转相除,为了省时间把最小公约数放在pd里面了,30行是为了判断本身符合情况,除以2是因为两个数可以反着来,所以count_+=2,小白才学一年不到非专业初一准备第一次NOIP
by TanJingWen2023 @ 2023-08-28 19:44:13
另外我是习惯把主要代码写在一个函数里的,因为老师说c++是面向对象吧(我不确定).
by TanJingWen2023 @ 2023-08-28 19:49:08
求大佬帮助!
by TanJingWen2023 @ 2023-08-28 19:50:35
超时都是1.2秒
by zhangshuhang2011 @ 2023-08-28 20:03:38
悬关吗