1 条题解
-
1
合法的和除了满足题目中的第2条件,还一定满足:
这也是最大公因数和最小公倍数的一条定理。
这就代表了,合法的和,一定是的一对因数。我们枚举它的每一对因数,只要它满足题目中的第2条件就将答案,因为和是两组不同的解(可参考样例说明)。
AC code:
#include<bits/stdc++.h> #define ll long long using namespace std; ll x,y,k,ans; ll __lcm(ll a,ll b){ return a/__gcd(a,b)*b; // 注意这个地方尽量不要写成a*b/__gcd(a,b),防止a*b溢出 } int main(){ scanf("%lld%lld",&x,&y); k=x*y; for(ll i=1;i*i<=k;i++) if(k%i==0){ ll j=k/i; if(__gcd(i,j)==x&&__lcm(i,j)==y) // 记得特判,i和j相同的话只能算作1组解 if(i==j) ans++; else ans+=2; } printf("%lld",ans); return 0; }
- 1
信息
- ID
- 606
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 113
- 已通过
- 59
- 上传者