基本思想:
找素数,再取模;
关键点:
存在一个待解决的问题,后续进行总结;
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const int maxn = 100010; bool arr[maxn]; void init(int n) { fill(arr, arr + maxn, false); ll cnt = 1; for (ll i = 2; i < maxn; i++) { if (!arr[i]) { for (int j = i + i; j < maxn; j += i) { arr[j] = true; } } } for (int i = 2; i < maxn&&n!=0; i++) { if (!arr[i]) { n--; i = i % 50000; cnt = cnt % 50000; cnt = i * cnt; cnt = cnt % 50000; //cout << i << endl; } } cout << cnt; } bool is_prime(int n) { int sqr = int(sqrt(n)); for (int i = 2; i <= sqr; i++) { if (n%i == 0) return 0; } return 1; } int main(){ int n; cin >> n; if (n == 0) { cout << 0; return 0; } ll num = 2; ll cnt = 1; while (n != 0) { if (is_prime(num)) { cnt *= num % 50000; cnt %= 50000; n--; } num++; } cout << cnt<<endl; return 0; }