Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38688 李羽乔 【J】T2 C++ 通过 100 78 MS 12504 KB 1077 2025-10-18 16:13:14

Tests(25/25):


#include<bits/stdc++.h> using namespace std; const int N = 1e7+10,M = 1e6+10; int n,prime[N],c; bool isprime[N]; long long ans; int main(){ cin>>n; ans=1ll; for(int i=2;i<=n;i++){ if(!isprime[i]){ prime[++c]=i; if(c>=2){ int mid=(prime[c]+prime[c-1])/2; ans=ans+((long long)mid-(long long)prime[c-1]+1ll)*((long long)mid-(long long)prime[c-1])/2ll; ans=ans+((long long)prime[c]-(long long)mid+1ll)*((long long)prime[c]-(long long)mid)/2ll; //ans=ans+(long long)prime[c]-(long long)prime[c-1]; //cout<<i<<" "<<ans<<endl; } } for(int j=1;j<=c;j++){ if(prime[j]*i>n){ break; } isprime[prime[j]*i]=1; if(i%prime[j]==0){ break; } } } if(prime[c]<n){ ans=ans+((long long)n-(long long)prime[c]+1ll)*((long long)n-(long long)prime[c])/2ll; } cout<<ans<<endl; return 0; }


测评信息: