建议在 TBOJ 观看。
首先,这里,我祝大家 2024 2024 2024 年新年快乐!
祝大家在新的一年里,合家欢乐,自己的事业也能越来越好。
不知道为啥这题通过率这么低(至少我写题解时通过率是 2 11 \displaystyle \frac 2 {11} 112 , 那俩次还是我 A C AC AC 的……)
不扯了,我们看看题目,就是问一个整数 m × n m \times n m×n 他能分成多少种类如 a × b a\times b a×b 的形式。(不包括 m × n m\times n m×n)
那我们来分析一下这道题的简洁题面,这题不就是
一个整数 n n n 能拆分成多少种 n × m n\times m n×m ( n , m ≠ 1 n,m \ne 1 n,m=1)的形式( a × b a\times b a×b 和 b × a b\times a b×a 算一种情况),我们只需把这个答案算出来,再减 1 1 1 就行了。
那我们直接枚举 n n n 的因数就可以了。注意一下从 2 2 2 开始就行了。
还有一点就是 需要注意一下数据范围, n × m n\times m n×m 的最大值应该差不多是 1 0 14 10^{14} 1014.所以,建议大家开启 l o n g long long l o n g long long
时间复杂度 O ( n × m ) O(\sqrt{n\times m}) O(n×m)
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,a,b,ans;
int main(){
cin>>a>>b;
n=a*b;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0&&i!=a&&i!=b){
ans++;
}
}
cout<<ans-1;
return 0;
}
此篇题解如有错误,请私信:
ZKY2506–TBOJ
zhangkeyuan0623–luogu
我们下次再见!