J - Prime Game锛堟暟璁哄垎瑙h川鍥犲瓙)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了J - Prime Game锛堟暟璁哄垎瑙h川鍥犲瓙)相关的知识,希望对你有一定的参考价值。
鏍囩锛?a href='http://www.mamicode.com/so/1/bsp' title='bsp'>bsp
浜х敓 闀垮害 mes cout 浣嶇疆 span ack 杩欎竴棰樻剰灏辨槸绠楀瓙鍖洪棿鍐呯殑涓嶅悓璐ㄥ洜瀛愮殑涓暟
棰樼洰澶ф剰锛?/strong>鏈変竴涓暱搴︿负n鐨勫簭鍒梐锛屽畾涔塵ul(l, r)涓哄尯闂碵l, r]涓璦[i]鐨勪箻绉紝
fac(l, r)涓簃ul(l, r)涓嶅悓绱犳暟鍥犲瓙鐨勪釜鏁般€傛眰鎵€鏈夊尯闂磃ac鐨勫拰銆?/strong>
鍜岃繖涓鏈夌偣绫讳技
缁欏畾涓€涓暱搴︿负n鐨勫簭鍒楋紝鐒跺悗姹傚嚭姣忎竴涓瓙鍖洪棿涓嶅悓鏁扮殑涓暟鍜屻€傝€岃繖涓€閬撻灏辨槸缁勫悎璁℃暟锛岃绠楁瘡涓€涓綅缃笂鐨勫€煎鏈€鍚庡尯闂磋鏁版墍浜х敓鐨勮础鐚€?/span>
鑰岃繖閬撻绫讳技锛岀暐寰慨鏀瑰嵆鏄瘡涓€涓綅缃笂涓嶅彧涓€涓€硷紙鍒嗚В鍙兘寰楀埌澶氫釜璐ㄥ洜瀛愶級锛屾墍浠ュ氨鐢╲ector鏉ュ瓨鏀俱€?/span>
鎵€浠ヤ粬鐨勮础鐚氨鏄?/span>
#include<iostream> #include<algorithm> #include<vector> using namespace std; typedef long long ll; const int maxn=1e6+100; vector<int>v[maxn]; int prime[maxn]; bool biaoji[maxn]; int a[maxn]; int cnt=0; void get(){ for(int i=2;i<maxn;i++){ if(!biaoji[i]) prime[++cnt]=i; for(int j=1;j<=cnt&&i*prime[j]<maxn;j++){ biaoji[i*prime[j]]=1; if(i%prime[j]==0){ break; } } } } void di(int x){ int t=a[x]; for(int j=1;j<=cnt&&prime[j]*prime[j]<=t;j++){ if(t%prime[j]==0){ v[prime[j]].push_back(x); while(t%prime[j]==0){ t/=prime[j]; } } } if(t!=1){ v[t].push_back(x); } } int main(){ get(); int n; cin>>n; for(int i=2;i<=maxn;i++){ v[i].push_back(0); } for(int i=1;i<=n;i++){ cin>>a[i]; di(i); } ll ans=0; for(int i=1;i<=cnt;i++){ for(int j=1;j<v[prime[i]].size();j++){ ans=ans+1ll*(v[prime[i]][j]-v[prime[i]][j-1])*1ll*(n-v[prime[i]][j]+1); } } cout<<ans<<endl; }
以上是关于J - Prime Game锛堟暟璁哄垎瑙h川鍥犲瓙)的主要内容,如果未能解决你的问题,请参考以下文章
Reverses CodeForces - 906E 锛堟渶灏忓洖鏂囧垎瑙o級
锛堟暟鎹瀛﹀涔犳墜鏈?1锛塩onda+jupyter鐜╄浆鏁版嵁绉戝鐜鎼缓
[Gym-101981J] Prime Game (组合计数)
2018南京icpc-J-Prime Game (欧拉筛+唯一分解定理)
2018-2019 ACM-ICPC, Asia Nanjing Regional Contest(J Prime Game)