RE 不解
查看原帖
RE 不解
537046
大眼仔Happy楼主2024/6/26 17:48

rt,我在前面的帖子上面看到了 __int128 不能当下标。然后测试了一下。

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
#define ll __int128 
ll inline read(){
	ll num=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){num=(num<<3)+(num<<1)+(ch^48);ch=getchar();}
	return num*f;
}
void _print(ll x){if(x>=10)_print(x/10);putchar(x%10+'0');}
void print(ll x,char s=' '){if(x<0)putchar('-'),x=-x;_print(x);putchar(s);}
ll tot;
ll p[N],minD[N];bool vis[N];
void init(ll t){
	vis[1]=1;
	for(int i=2;i<=t;i++){
		if(!vis[i])p[++tot]=i,minD[i]=i;
		for(int j=1;i*p[j]<=t;j++){
			vis[i*p[j]]=1;
			minD[i*p[j]]=p[j];
			if(i%p[j]==0)break;
		}
	}
}
ll n,m,mod;
int main(){
	n=read();m=read();mod=read();init(mod);
	p[++tot]=(int)1;print(p[tot]);
	return 0;
}

这个程序调用 init() 的时候会 RE。然而下面也有一个 p[++tot]=(int)1;,只写这个时不会错。把 tot 改成 long long 也不会错。

不懂,求解。

2024/6/26 17:48
加载中...