求助0分,自测全对
查看原帖
求助0分,自测全对
235901
Always_Remember_It楼主2023/9/9 21:30
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int n,m,a[N],sum[N];
inline int read(){
	int s=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		s=(s<<3)+(s<<1)+(ch^48);
		ch=getchar();
	}
	return s*f;
}
signed main(){
	n=read(),m=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
	}
	for(int i=1;i<=m;i++){
		int op=read();
		if(op==1){
			int x=read(),y=read();
			sum[x]+=y;
			continue;
		}
		int j=read();
		if(j==0){
		   	cout<<0<<endl;
		    continue;
		}
		int now=a[j],maxn=sqrt(a[j]);
		for(int l=1;l<=maxn;l++){
			if(a[j]%l==0) now+=sum[l]+sum[a[j]/l];
		}
		if(maxn*maxn==a[j]) now-=sum[maxn];
		cout<<now<<endl;
	}
	return 0;
}
2023/9/9 21:30
加载中...