AcWing 197 階乘分解

2022-06-10 15:57:07 字數 972 閱讀 1373

原題鏈結

考察:質數篩

錯誤思路:

用map可以很方便地合併同類項,但是用map會mle

正確思路:

對於1~n的每1個數,它們都會被它的最小質因數篩掉.這道題不是求分解n的質數,不能只列舉到√n.因為1~n之間還存在著質數.這些質數能夠除盡>√n的質數

關於篩法.裡層迴圈的=號非常重要.因為存在n/i=2.2而prime[j]==2的情況,如果沒有等號就會少篩

可以把while迴圈裡的累乘t*=prime[i]換成n/=prime[i]這樣不會溢位.

1 #include 2 #include //

吾日三省吾身,質數問題考慮1了嗎

3 #include 4

using

namespace

std;

5const

int n = 1e6+10;6

intprime[n],cnt,ans[n];

7bool

st[n];

8void getprime(intn)9

18}19}

20int

main()

2134 ans[prime[i]] =res;35}

36for(int i=1;i<=cnt;i++)

37if(ans[prime[i]]!=0) printf("

%d %d\n

",prime[i],ans[prime[i]]);

38return0;

39 }

2021.1.24 把這道題又寫了一遍,結果wa得非常慘烈,思路是對的,錯在要開long long

這道題不是篩n的質數,而是篩1~n的質數,所以陣列要開到1e6,而不是√n

雖然這道題不用處理1,但一定要注意1

數論題建議無腦long long.....這道題累乘溢位了

AcWing 197 階乘分解

給定整數 n 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci 即可。輸入格式 乙個整數n。輸出格式 n 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pcii項。按照pi從小到大的順序輸出。資料範圍 1 n 106 輸入樣例 5輸出樣例 2 33 1 5...

AcWing197階乘分解

n 的最大質因子不超過n。先質數篩出n以內質數,然後算在n!出現了多少次。對於質數p,只有質數p的倍數才含p。至少含有乙個p的有 include include include define ms a,b memset a,b,sizeof a define inf 0x3f3f3f3f defin...

AcWing 197 階乘分解

給定整數 n 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci 即可。輸入格式 乙個整數n。輸出格式 n 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pcii項。按照pi從小到大的順序輸出。資料範圍 1 n 106 輸入樣例 5輸出樣例 2 33 1 5...