[BZOJ 4804] 오라 암산: 모비우스 역습
일련의 반전을 거쳐
ans(n)=∑T=1n⌊nT⌋∗⌊nT⌋∗∑i|Tφ(i)∗μ(Ti)
(알 수 없는 조언은 일단 BZOJ 2820을 하자.)
그래서 이제 맞아요.
∑i|Tφ(i)∗μ(Ti) 접두사와 이것을 구하려면 분류 토론이 필요하고 구체적으로 코드를 보아야 한다
/*
User:Small
Language:C++
Problem No.:4804
*/
#include
#define ll long long
#define inf 999999999
using namespace std;
const int M=1e7+5;
int n,h[M],prime[M],cnt;
bool not_prime[M];
ll ans,sum[M];
void solve(){
ans=0;
scanf("%d",&n);
for(int i=1,r;i<=n;i=r+1){
r=n/(n/i);
ans+=(ll)(n/i)*(n/i)*(sum[r]-sum[i-1]);
}
printf("%lld
",ans);
}
int main(){
h[1]=1;
for(int i=2;i<=1e7;i++){
if(!not_prime[i]){
prime[++cnt]=i;
h[i]=i-2;
}
for(int j=1;j<=cnt&&i*prime[j]<=1e7;j++){
not_prime[i*prime[j]]=1;
if(i%prime[j]==0){
if(i/prime[j]%prime[j]==0)
h[i*prime[j]]=h[i]*prime[j];
else h[i*prime[j]]=h[i/prime[j]]*(prime[j]-1)*(prime[j]-1);
break;
}
h[i*prime[j]]=h[i]*h[prime[j]];
}
}
for(int i=1;i<=1e7;i++) sum[i]=sum[i-1]+h[i];
int t;
scanf("%d",&t);
while(t--) solve();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
BZOJ3930: [CQOI2015] 선택거의 짠 물고기일 거야.. 처음에 제목 yy에 대해 정확할 것 같고 복잡도 계산이 안 되는 검색을 했는데 잘 안 되는 것 같아서 DP를 생각하고 정확해 보이는 DP를 생각해서 끊었어요.그럼 용납하고 싶다......설...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.