关于数据
查看原帖
关于数据
300883
lngqb楼主2023/1/1 20:37

如何评价MAXN正常写1e8得了82分,把MAXN改成6e7竟然AC,k没有1e16的卡人数据

#include<bits/stdc++.h>
#define int long long
#define re register
const int mod=1e9+7;
const int MAXN=6e7+1;
using namespace std;
int zs[6000000];
bool a[MAXN];
int tt,k;
void prime(){
	tt=1;
	for(re int i=3;i<MAXN;i+=2)
	{
		if(a[i]==0)
		{
			zs[++tt]=i;
			for(re int q=i*3;q<MAXN;q+=i*2)
			{
				a[q]=1;
			}
		}
	}
}
int ksm(int x,int y)
{
	int ans=1;
	while(y>0)
	{
		if(y&1) 
		{
			ans*=x;
			ans%=mod;
		}
		x*=x;
		x%=mod;
		y>>=1;
	}
	return ans;
}
signed main()
{
//	freopen("C.in","r",stdin);
//	freopen("C.out","w",stdout);
	int t;
	scanf("%lld",&t);
	zs[1]=2;
	prime();
	while(t--)
	{
		int p,q,ans=1,sum=0;
		scanf("%lld%lld%lld",&k,&p,&q);
		ans*=(q-p+1);
		ans%=mod;
		int g=sqrt(k);
		for(re int i=1;i<=tt&&zs[i]<=g;i++)
		{
//			printf("%lld\n",zs[i]);
			if(k%zs[i]==0)
			{
				sum++;
				while(k%zs[i]==0)
				{
					k/=zs[i];
				}
			}
		}
		if(k>1) sum++;
		ans*=ksm(2,sum);
		ans%=mod;
		printf("%lld\n",ans);
	}
}

AC记录

2023/1/1 20:37
加载中...