麦睿生 • 3个月前
#include<bits/stdc++.h>
#define il inline
#define ll long long
using namespace std;
const long long N=1000005;
il long long gi() {
long long a=0;
char x=getchar();
bool f=0;
while((x<'0'||x>'9')&&x!='-')x=getchar();
if(x=='-')x=getchar(),f=1;
while(x>='0'&&x<='9')a=a*10+x-48,x=getchar();
return f?-a:a; } ll a[N],n,m,tot[N];
int main() { n=gi(),m=gi();
for(int i=1;i<=n;i++)a[i]=gi();
long long k,x,y;
while(m--){ scanf("%lld",&k);
if(k==2){x=gi(); ll ans=0;
for(long long i=1;i*i<=x;i++)
if(x%i==0){i*i==x?ans+=tot[i]:ans+=tot[i]+tot[x/i];}
printf("%lld\n",a[x]+ans); }
else { x=gi();y=gi();tot[x]+=y; } }
return 0; }
评论: