暑假集訓很忙,大概一周沒寫題解了,我會找時間把經典的題寫題解(*)。
剛開始我的思路是先算(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...