NOIP2001最大公约数和最小公倍数问题
题目描述
输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数。
条件:
1、P,Q是正整数
2、要求P,Q以x0为最大公约数,以y0为最小公倍数。
试求:满足条件的所有可能的两个正整数的个数。
样例
输入:x0=3 yo=60
输出:4
说明(不用输出)此时的 P Q 分别为:
3 60
15 12
12 15
60 3
所以:满足条件的所有可能的两个正整数的个数共4种.
输入
输入只有一行,为两个正整数x0和y0。
输出
输出只有一行,为满足条件的所有可能的两个正整数的个数。
样例输入
3 60
样例输出
4
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include<iostream> using namespace std; int main() { int x0,y0,x,i=2,k=0; cin>>x0>>y0; if(y0%x0!=0){cout<<0;return 0;} x=y0/x0; while(x!=1) { while(x%i!=0)i++;k++; while(x%i==0)x/=i; } cout<<k*2; return 0; } |
虽然不知道用hzwer你的代码也可以过测试点(可能是太水了)
但是我觉得最后输出是不是应该是2^k而不是2*k???
(可能是大佬疏忽了)