Cod sursa(job #584384)

Utilizator informatician28Andrei Dinu informatician28 Data 25 aprilie 2011 10:57:42
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long p,s,nr,k,s1,var,m=9973,v[10000],ma=0,u,prim[10000];
void ciur() 
{for(k=2;k<=ma;k++) 
	prim[k]=1; 
for(k=2;k<=sqrt(ma);k++) 
	if(prim[k]) 
		for(u=k*k;u<=ma;u+=k) 
			prim[u]=0;
}
long long put(int baza,int expo)  
{if(expo==1) {return baza;} 
if(expo&1) {return (baza*put(baza,expo-1));}
else {var=put(baza,expo/2); return (var*var);}
}
int main()
{int j,fm,t,n,i;
f>>t;
for(i=1;i<=t;i++)
{f>>v[i]; if(v[i]>ma) ma=v[i];} 
for(i=1;i<=t;i++) 
{n=s=1; if(prim[v[i]]) {n*=2; s*=(1+v[i]);}else { j=2;
do
{fm=0;
while(v[i]%j==0) {fm++; v[i]/=j;} n*=(fm+1);
s*=(put(j,fm+1)-1)/(j-1);
j++;
}while(v[i]!=1);
}
g<<n<<" "<<s%m<<'\n';}
return 0;
}