每次对a的修改,更新相关的c。
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000100;
long long f[MAXN],c[MAXN];
void read(int&a){
char ch;while(!((ch=getchar())>='0')&&(ch<='9'));
a=ch-'0';while(((ch=getchar())>='0')&&(ch<='9'))a*=10,a+=ch-'0';
}
inline void prin_d(long long x)
{
if (x > 9)
{
prin_d(x / 10);
}
putchar(x % 10 + '0');
return ;
}
int main()
{
int n,q,i,j,x,y,op;
while(~scanf("%d%d",&n,&q))
{
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)//f[x]表示x的因子数
for(j=i;j<=n;j+=i)
f[j]++;
while(q--)
{
read(op);
if(op==1)
{
read(x);read(y);
for(i=x,j=1;i<=n;i+=x,j++)
c[i]+=y*f[j];
}
else
{
read(x);
prin_d(c[x]);
puts("");
}
}
}
}