格式有点乱的题解

麦睿生  •  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; }

评论: