本文主要是介绍约数个数--数学模板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点击跳转例题
一个数分解质因数之后,如果要求出其中某个约数,那么就是这些质因子选与不选,选几个来组合的问题。所以有多少种选法就是简单的乘法原理。
核心代码unordered_map<int,int>mp; for(int i=2;i<=x/i;i++){while(x%i==0)mp[i]++,x/=i;}if(x>1)mp[x]++;
例题代码:
#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' #define LL __int128using namespace std;const int N=2e5+10,M=1e3+10,mod=998244353,INF=0x3f3f3f3f;int a[N],b[N],c[N],pre[N];signed main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int n;cin>>n;unordered_map<int,int>mp;while(n--){int x;cin>>x;for(int i=2;i<=x/i;i++){while(x%i==0)mp[i]++,x/=i;}if(x>1)mp[x]++;}int res=1;for(auto i:mp)res=res*(i.second+1);cout<<res<<endl;return 0; }
这篇关于约数个数--数学模板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!