递归分解因数
題目總時間限制:?1000ms? 內存限制:?65536kB 描述給出一個正整數a,要求分解成若干個正整數的乘積,即a = a1 * a2 * a3 * ... * an,并且1 < a1 <= a2 <= a3 <= ... <= an,問這樣的分解的種數有多少。注意到a = a也是一種分解。 輸入第1行是測試數據的組數n,后面跟著n行輸入。每組測試數據占1行,包括一個正整數a (1 < a < 32768) 輸出n行,每行輸出對應一個輸入。輸出應是一個正整數,指明滿足要求的分解的種數 樣例輸入 2
2
20
樣例輸出? 1? ? ? ? ? ? ? 4解析 #include<bits/stdc++.h>
using namespace std;
int n;
int ans=0;
int flag;
void dfs(int all,int now)
{if(all==n){ans++;return;}for(int i=now;i<=n;i++){if(all*i>n) break;if(n%i==0) dfs(all*i,i);}
}
int main()
{int m;//個數cin>>m;for(int i=1;i<=m;i++){cin>>n;if(n==1&&n==2){cout<<"1"<<endl;return 0;}dfs(1,2);cout<<ans<<endl;}
}
?
轉載于:https://www.cnblogs.com/KyleDeng/p/9248373.html
總結
- 上一篇: 梦到很深的水是什么意思
- 下一篇: 怎样在减少数据中心成本的同时不牺牲性能?