分解因数(信息学奥赛一本通-T1200)
生活随笔
收集整理的這篇文章主要介紹了
分解因数(信息学奥赛一本通-T1200)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目描述】
給出一個正整數aa,要求分解成若干個正整數的乘積,即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<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define N 1000010 using namespace std; int a[32768]; int tot; int x; void calculate(int n,int step) {int ans=1;for(int i=1;i<=step-1;i++)ans*=a[i];if(ans>x)return;if(ans==x){tot++;return;}for(int i=a[step-1];i<=x;i++)if(n%i==0){n/=i;a[step]=i;calculate(n,step+1);n*=i;} } int main() {int n;cin>>n;while(n--){tot=0;cin>>x;a[0]=2;calculate(x,1);cout<<tot<<endl;}return 0; }?
總結
以上是生活随笔為你收集整理的分解因数(信息学奥赛一本通-T1200)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器人搬重物(洛谷-P1126)
- 下一篇: 图论 —— 稳定婚姻问题与延迟认可算法