比赛 |
20160316 |
评测结果 |
AAAAAAAAAA |
题目名称 |
外星人 |
最终得分 |
100 |
用户昵称 |
mikumikumi |
运行时间 |
0.622 s |
代码语言 |
C++ |
内存使用 |
5.43 MiB |
提交时间 |
2016-03-16 20:34:57 |
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
int maxn=500001;
int n,m;
int p[500001],s[500001],pt=0,ph[500001];
long long ans=0;
int make()
{
ph[1]=1;
int N=maxn;
int k;
for(int i=2;i<N;i++)
{
if(s[i]==0)
{
p[++pt]=s[i]=i;ph[i]=ph[i-1];
}
for(int j=1;j<=pt&&(k=p[j]*i)<N;j++)
{
s[k]=k;
ph[k]=ph[i]+ph[p[j]];
if(i%p[j]==0) break;
}
}
return 0;
}
int main()
{
freopen("alien.in","r",stdin);
freopen("alien.out","w",stdout);
make();
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int m,ma=0;
scanf("%d",&m);
long long a,b;
cin>>a>>b;
ans=b*ph[a]+(a!=2);
for(int j=1;j<m;j++)
{
cin>>a>>b;
ans+=b*ph[a];
}
cout<<ans<<endl;
}
//printf("%d",ph[4]);
return 0;
}