题解 P7679 【[COCI2008-2009#5] JABUKA】
设题目中分给每个朋友的苹果数为
我们都知道,如果
那么,枚举
下面给出一种代码实现:
#include <cmath>
#include <iostream>
using namespace std;
int gcd(int a,int b){return !b?a:gcd(b,a%b);}
int a,b,k,l;//k=gcd(a,b), l=sqrt(k)
int main(){
cin>>a>>b;
k=gcd(a,b);
l=sqrt(k);
for(int i=1;i<=l;i++){
if(k%i==0){
cout<<i<<" "<<a/i<<" "<<b/i<<endl;
}
}
for(int i=l-(l*l==k);i>=1;i--){
//这里的 l-(l*l==k),是在特判 k 为完全平方数的情况,如果 k 确实是,那么直接 -1,避免再一次枚举 l 的情况
if(k%i==0){
cout<<k/i<<" "<<a/(k/i)<<" "<<b/(k/i)<<endl;
}
}
return 0;
}