不一样的文章

懒得打开头语,想睡觉;

题目描述

输入两个正整数 x_0, y_0x0​,y0​,求出满足下列条件的 P, QP,Q 的个数:

  1. P,QP,Q 是正整数。

  2. 要求 P, QP,Q 以 x_0x0​ 为最大公约数,以 y_0y0​ 为最小公倍数。

试求:满足条件的所有可能的 P, QP,Q 的个数。

输入格式

一行两个正整数 x_0, y_0x0​,y0​。

输出格式

一行一个数,表示求出满足条件的 P, QP,Q 的个数。

输入输出样例

输入 #1复制

3 60

输出 #1复制

4

说明/提示

P,QP,Q 有 44 种:

  1. 3, 603,60。
  2. 15, 1215,12。
  3. 12, 1512,15。
  4. 60, 360,3。

对于 100\%100% 的数据,2 \le x_0, y_0 \le {10}^52≤x0​,y0​≤105。

【题目来源】

NOIP 2001 普及组第二题

#include<bits/stdc++.h>
using namespace std;
int m,n,ans;
int main(){
	cin>>m>>n;
	if(m==n)ans--;
	n*=m;
	for(int i=1;i<=sqrt(n);i++){
		if(n%i==0&&__gcd(i,n/i)==m) ans+=2;
	}
	cout<<ans;
	return 0;
}

可能会打错,毕竟我太困了;

晚安!

上一篇:matlab设置生成图片,调大小,比例


下一篇:洛谷P1506染色法Java解题