poj2992 Divisors (階乘因數分解)

2021-07-15 02:16:45 字數 1020 閱讀 1696

暑假集訓很忙,大概一周沒寫題解了,我會找時間把經典的題寫題解(*)。

剛開始我的思路是先算(n-k+1)~n這個區間每個數的因數分解然後相加,減去1~k這個區間每個數的因數分解,當時完全沒有想到超時(打表打完不超時,但呼叫輸入輸出立刻超時,卡得真是可以)。直接因數分解打表tle,t了我乙個晚上(^^)。於是,這就需要數學知識來優化。

首先,我們可以把所有的n以內的質數給打表求出來。

下面**求的是1~num中分解後a的指數和

inline int cal(int a,int num)

#include 

#include

#include

#include

#include

#include

#include

#include

#define maxn 433

#define ms(x) memset(x,0,sizeof(x))

#define msc(x) memset(x,-1,sizeof(x))

typedef

long

long ll;

using

namespace

std;

int prime[91];

bool is_prime[maxn+1];

void getprime(void)

}}inline

int cal(int a,int num)

int main(int argc, char

const *argv)

ll res=1;

for(int i=1;i0]&&prime[i]<=n;i++)

res*=(cal(prime[i],n)-cal(prime[i],k)-cal(prime[i],n-k)+1);

printf("%i64d\n",res );

}return

0;}

階乘質因數分解

時間限制 3000 ms 記憶體限制 65535 kb難度 2 描述 給定兩個數n,m,其中m是乙個素數。將n 0 n 2 31 的階乘分解質因數,求其中有多少個m。注 為求冪符號。輸入 第一行是乙個整數s 0 輸出輸出m的個數 樣例輸入 3 100 5 16 2 1000000000 13 樣例輸...

CH3101 階乘質因數分解

題意 3101 階乘分解 0x30 數學知識 例題 描述給定整數 n 1 n 10 6 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 p i 和 c i 即可。輸入格式 乙個整數n。輸出格式 n 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pi ci項。按照pi從小...

CH 3101 階乘分解 質因數分解

題目鏈結 給定整數 n 1 n 106 10 6 106 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 p ip i pi 和 c ic i ci 即可。任何乙個大於 1 的正整數都能唯一分解成有限個質數的乘積,可寫做 n p 1c1p 2c2.pm cm n p p p n p...