6,7,8,10TLE,9WA求助
查看原帖
6,7,8,10TLE,9WA求助
1072445
TanJingWen2023楼主2023/8/28 19:42
#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

2023/8/28 19:42
加载中...