从第4个点开始WA谁来帮帮我
查看原帖
从第4个点开始WA谁来帮帮我
491007
凤凰工作室楼主2024/8/22 17:17
#include<bits/stdc++.h>
using namespace std;
#define int long long

int ans=0;
int qpow(int x,int y)
{
	int res=1,ba=x;
	while(y>0)
	{
		if(y&1)
			res*=ba;
		ba*=ba;
		y>>=1;
	}
	return res;
}

bool vis[1000005];

signed main(void)
{
	int n,m;
	cin>>n>>m;
	ans=n*m-(m-1);
	for(int i=2;i<=n;i++)
	{
		if(vis[i])continue;
		int cnt=0;
		for(int j=2;;j++)
		{
			if(qpow(i,j)>n)break;
			vis[qpow(i,j)]=true;
			cnt++;
		}
		for(int j=1;j<cnt+1;j++)
		{
			for(int p=j+1;p<=cnt+1;p++)
			{
				if(p%j==0)ans-=m/(p/j);
				else ans-=m/(p/__gcd(p,j));
			}
		}
	}
	cout<<ans;
	return 0;
}
2024/8/22 17:17
加载中...