蓝桥杯 1485: [蓝桥杯][算法提高VIP]Torry的困惑(提高型) 需要二刷 *存在取模和溢出问题
基本思想:
找素数,再取模;
关键点:
存在一个待解决的问题,后续进行总结;
#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;
}

浙公网安备 33010602011771号