为什么运行错误?
  • 板块学术版
  • 楼主czy0323
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/4/21 19:58
  • 上次更新2023/10/23 17:53:34
查看原帖
为什么运行错误?
538427
czy0323楼主2023/4/21 19:58
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
const int MAXN=1e7+5;
int l,r;
long long ans;
bool isprime[MAXN];
short v[MAXN],cntv[MAXN],divi[MAXN];
int prime[MAXN],cnt;

int main(){
	cin>>l>>r;
	for(int i=2;i<=r;i++){
		if( !isprime[i] )
			prime[++cnt]=i,v[i]=i;
		for(int j=1;j<=cnt && i*prime[j]<=r;j++){
			v[i*prime[j]]=prime[j];
			isprime[i*prime[j]]=1;
			if( i%prime[j]==0 )
				break;
		}
	}
	divi[1]=cntv[1]=v[1]=1;
	for(int i=2;i<=r;i++){				//这里是第24行
		if( v[i/v[i]]!=v[i] )
			cntv[i]=1, divi[i]=divi[i/v[i]]*2;
		else
			cntv[i]=cntv[i/v[i]]+1, divi[i]=divi[i/v[i]]/(cntv[i/v[i]]+1)*(cntv[i]+1);
	}
	for(int i=l;i<=r;i++)
		ans+=divi[i];
	cout<<ans<<endl;
	return 0;
}

这份代码因为第24到第29行而一直RE,在洛谷开O2就没问题了,但是在某OJ上就不行,有没有大佬指点一下RE在什么地方? 数据: 1 10000000

2023/4/21 19:58
加载中...