Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #define mod 1000000007
- int mul(int x,int y){
- return (int)((long long int)x*y%mod);
- }
- #define MAX 7368788
- #define SQMAX 2715
- bool f[MAX];
- int p[555555],lp;
- void init(){
- for(int i=2; i<MAX; i++){
- if(!f[i]){
- p[lp++]=i;
- }
- for(int j=0; j<lp; j++){
- int t=i*p[j];
- if(t>=MAX)break;
- f[t]=true;
- if(i%p[j]==0)break;
- }
- }
- }
- int q[SQMAX],lq;
- int main(){
- init();
- int res = 1, pp = 0, pq = 0,n;
- for(scanf("%d",&n); n--;){
- int x;
- if(pq == lq || p[pp] < q[pq])
- x = p[pp++];
- else
- x = q[pq++];
- res = mul(res, x);
- if(x < SQMAX)q[lq++] = x*x;
- }
- printf("%d\n",res);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement