SDUT 1722 整數因子分解問題(因子分解)

2021-06-27 11:28:08 字數 993 閱讀 2601

題意 :乙個整數,寫成因子相成的形式,問多少種寫法。比如當n=12 時 有8種寫法

12=12; 

12=6*2; 

12=4*3; 

12=3*4; 

12=3*2*2; 

12=2*6; 

12=2*3*2; 

12=2*2*3。

首先按公升序寫出n的所有因子。 比如12 的所有因子有 2 ,3, 4, 6 ,12 

對於 2 有 2*1 一種; 對於 3 ,有 3*1 一種;對於 4 ,有 4*1  2*(4/2) 兩種; 對於 6 ,有 6*1 ,2*(6/2) ,3*(6/3) ,3種,對於 12,有 12*1 ,2*6, 3*4, 4*3 , 2*2*3 , 6*2 , 2*3*2 , 3*2*2, 8種,ok就是它了,可以發現規律,對於第i個因子, 設 f[i]代表第i個因子代表的種類數, 初始化 f[0]=1 ,f[i]=1+f[j] (j>=0&&j

#include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 1005

#define _ll __int64

#define ll long long

#define inf 0x3f3f3f3f

#define mod 1<<40+10

#define pp pair#define ull unsigned long long

using namespace std;

ll n;int tot,fac[100010],f[100010];

void div(ll n)

} fac[tot++]=n;

}void solve()

printf("%d\n",f[tot-1]);

}int main()

1722 整數因子分解問題

time limit 1000 ms memory limit 65536 kib problem description 大於1的正整數n可以分解為 n x1 x2 xm。例如,當n 12 時,共有8 種不同的分解式 12 12 12 6 2 12 4 3 12 3 4 12 3 2 2 12 2...

整數因子分解

時間限制 1000ms 記憶體限制 1000k 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 大於1的正整數 n 都可以分解為 n x1 x2 xm,每個xi為大於1的因子,即1 第一行乙個正整數n 1 n 1000000 不同的分解式數目 12 8 此題因子講順序的.第乙個...

整數因子分解

大於1的正整數 n 都可以分解為 n x1 x2 xm,每個xi為大於1的因子,即1例如 當n 12時,共有8種不同的分解式 12 12 12 62 12 43 12 34 12 322 12 26 12 232 12 223 對於給定正整數n,計算n共有多少種不同的分解式。此題因子講順序的.第乙個...