资源限制 时间限制: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
#include<stdio.h> #include<iostream> #include<math.h> #include<string.h> #include<algorithm> #include<functional> using namespace std; const int inf = 0x3f3f3f3f; const double pi = acos(-1); typedef long long ll; //ALGO-51 Torry的困惑(基本型) const ll mod = 50000; bool f(ll x) { ll b = sqrt(x); for(ll i = 2; i <= b; i++) if(x % i == 0) return 0; return 1; } int main() { ll n, ans = 1, t = 0; scanf("%lld", &n); for(ll i = 2; ; i++) { if(t == n) break; if(f(i)) { t++; ans = (ans * i) % mod; } } printf("%lld", ans); return 0; }【注】打表不行,代码太大,不能超过64KB,正常写不会超时
