未知CE,学了OI几年没见过这种错误,求条(悲
  • 板块P2568 GCD
  • 楼主STARSczy
  • 当前回复8
  • 已保存回复9
  • 发布时间2023/10/26 15:24
  • 上次更新2023/11/2 11:21:13
查看原帖
未知CE,学了OI几年没见过这种错误,求条(悲
656765
STARSczy楼主2023/10/26 15:24
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e7+10,mod=1e9+7;
inline int read(){
	int c,w=0,n=0;
	while((c=getchar())<'0'||'9'<c) w=c=='-';
	do n=n*10+c-'0';while('0'<=(c=getchar())&&c<='9');
	return w?-n:n;
}
inline int write(int n){
	if(n<0) putchar('-'),n=-n;
	if(n>9) write(n/10);
	putchar(n%10+'0');
	return n;
}

int n=read(),ans,t[maxn],phi[maxn]={0,1};
vector<int> prime;
void makephi(){
	for(int i=2;i<=n;++i){
		if(!t[i]) prime.push_back(i),phi[i]=i-1;
		for(auto it:prime) if(i*it<=n){
			t[i*it]=1;
			if(i%it) phi[i*it]=phi[i]*phi[it];
			else{
				phi[i*it]=phi[i]*it;
				break;
			}
		}
		else break;
	}
}

signed main(){
	makephi();
	for(int i=1;i<=n;++i) phi[i]+=phi[i-1];
	for(auto p:prime) if(p<=n) ans+=2*phi[n/p]-1;
	else break;
	write(ans);
	return 0;
}
2023/10/26 15:24
加载中...