2018-2019 ACM-ICPC, Asia Nanjing Regional Contest(J Prime Game)
Posted H-w-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-2019 ACM-ICPC, Asia Nanjing Regional Contest(J Prime Game)相关的知识,希望对你有一定的参考价值。
J Prime Game
题意:
给出一个序列, m u l ( l , r ) = ∏ i = l r a i mul(l,r)=\\prod\\limits_{i=l}^ra_i mul(l,r)=i=l∏rai, f a c ( l , r ) fac(l,r) fac(l,r)表示 m u l ( l , r ) mul(l,r) mul(l,r)的中不同的质数的个数。
问: ∑ i = 1 n ∑ j = i n f a c ( i , j ) \\sum\\limits_{i=1}^n\\sum\\limits_{j=i}^nfac(i,j) i=1∑nj=i∑nfac(i,j)
思路:
统计在序列中出现过的质因子的出现在哪些下标中。
举个例子:假如 2 2 2这个质因子出现在序列的 1 , 4 , 5 , 7 1,4,5,7 1,4,5,7下标中,而序列的长度是 8 8 8。
我们规定 [ l , r ] [l,r] [l,r]这个区间包含多个相同质数的下标的话,只认为是最前面的那个产生了贡献,这样的话。
计算某个质数产生贡献的公式就是: ∑ i = 1 k ( p o s [ p r i m e ] [ i ] − p o s [ p r i m e ] [ i − 1 ] ) ∗ ( n − p o s [ p r i m e ] [ i ] + 1 ) \\sum\\limits_{i=1}^k(pos[prime][i]-pos[prime][i-1])*(n-pos[prime][i]+1) i=1∑k(pos[prime][i]−pos[prime][i−1])∗(n−pos[prime][i]+1)
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9+7;
const int N = 1e6+10;
const int inv2 = (mod+1)/2;
int p[N], tot;
bool st[N];
void init() {
for(int i=2; i<N; i++) {
if(!st[i]) p[tot++] = i;
for(int j=0; j<tot&&i*p[j]<N; j++) {
st[i*p[j]] = 1;
if(i % p[j] == 0) break;
}
}
}
vector<int> v[N];
int a[N];
map<int, int> mp;
signed main() {
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
init();
int n;
scanf("%d", &n);
for(int i=1; i<=n; i++) {
scanf("%d", &a[i]);
int tmp = a[i];
for(int j=0; 1ll*p[j]*p[j]<=tmp; j++) {
if(tmp % p[j] == 0) {
mp[p[j]] = 1;
if(v[p[j]].size() == 0) v[p[j]].push_back(0);
v[p[j]].push_back(i);
while(tmp % p[j] == 0) tmp /= p[j];
}
}
if(tmp > 1) {
mp[tmp] = 1;
if(v[tmp].size() == 0) v[tmp].push_back(0);
v[tmp].push_back(i);
}
}
ll ans = 0;
for(auto it : mp) {
int x = it.first, y = v[x].size();
for(int i=1; i<y; i++) {
ans += 1ll * (n-v[x][i]+1) * (v[x][i]-v[x][i-1]);
}
}
cout << ans << endl;
return 0;
}
以上是关于2018-2019 ACM-ICPC, Asia Nanjing Regional Contest(J Prime Game)的主要内容,如果未能解决你的问题,请参考以下文章
训练20191009 2018-2019 ACM-ICPC, Asia East Continent Finals
2018-2019 ACM-ICPC, Asia Seoul Regional Contest
2019.05.02 第九次训练 2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest
2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest Solution
2018-2019 ACM-ICPC, Asia Seoul Regional Contest
I. Distance (模拟)2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest