藍橋杯 演算法訓練 ALGO-51 Torry的困惑(基本型)
阿新 • • 發佈:2018-12-21
演算法訓練 Torry的困惑(基本型)
時間限制:1.0s 記憶體限制:512.0MB
提交此題
問題描述
Torry從小喜愛數學。一天,老師告訴他,像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴老師。老師愣住了,一時回答不出來。於是Torry求助於會程式設計的你,請你算出前n個質數的乘積。不過,考慮到你才接觸程式設計不久,Torry只要你算出這個數模上50000的值。
輸入格式
僅包含一個正整數n,其中n<=100000。
輸出格式
輸出一行,即前n個質數的乘積模50000的值。
樣例輸入
1
樣例輸出
2
分析:本題求前n個質數的乘積模,自然要取出前n個質數進行累乘取模,所以從2開始++遍歷即可。
思路:由於對50000取模,假設恰好是49999,而
的結果是超過int範圍的,所以結果應該用long long儲存。
#include <iostream> using namespace std; bool zhishu(int n) { for(int i = 2; i * i <= n; i++) if(n % i == 0) return false; return true; } int main() { int n,count = 0; long long res = 1; cin >> n; for(int i = 2;; i++) { if(count == n) break; if(zhishu(i)) { res = (res * (i % 50000)) % 50000; count++; } } cout << res << endl; return 0; }