求助
  • 板块学术版
  • 楼主LJN1117
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/8/22 15:42
  • 上次更新2023/10/27 14:10:07
查看原帖
求助
404469
LJN1117楼主2022/8/22 15:42
#include<bits/stdc++.h>
#define int long long
#define maxn 1000000+5
#define maxm 2000000+5
using namespace std;
int n,m,s,l;
int ans=1;
int a[maxn];
int v[maxm];
int p[maxm];
signed main()
{
    scanf("%lld %lld",&n,&m);
    for(int i=1;i<=20;i++)
	{
        for(int j=1;j<=m;j++)
		{
			if(!p[i*j])
			{
				l+=(p[i*j]=1);
			}
		}	
		a[i]=l;
    }
    for(int i=2;i<=n;i++)
	{
		if(!v[i])
		{
        	s=1;l=0;
        	while(s*i<=n)
			{
				l+=(v[s*=i]=1);
			}
        	ans+=a[l];
   		}
	}
    printf("%lld\n",ans);
    return 0;
}

maxm开到20000000+5就MLE 开到2000000+5就RE,在线等,很急

2022/8/22 15:42
加载中...