碼農場 » POJ 3421 X-factor Chains 題解 《挑戰程式設計競賽》
阿新 • • 發佈:2019-01-31
#include <iostream> #include<cstdio> #include<algorithm> #include<vector> #include<numeric> using namespace std; typedef long long ll; int n; vector<int> v; void factor(int n) { for(int i=2;i*i<=n;i++) { int time=0; while(n%i==0) { time++; n/=i; } v.push_back(time); } if(n!=1) v.push_back(1); } ll f(int n) { ll ans=1; for(int i=1;i<=n;i++) ans*=i; return ans; } int main() { while(cin>>n) { v.clear(); factor(n); int length=accumulate(v.begin(),v.end(),0); ll ans=f(length); for(int i=0;i<v.size();i++) { ans/=f(v[i]); } cout<<length<<" "<<ans<<endl; } return 0; }
求某數的最長因子鏈長度以及最長鏈的個數
本人起初以為是求因子鏈的個數,想了半天