Cod sursa(job #582906)

Utilizator informatician28Andrei Dinu informatician28 Data 16 aprilie 2011 16:59:30
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long p,s,n,s1;
int k;
int prim(long long nu)
{int ok,d;
ok=1;
	for(d=2;d<=sqrt(nu);d++)
    if(nu%d==0) ok=0;
return ok;
}
long long rid(int baza,int expo) 
{int k; 
p=1;
for(k=1;k<=expo;k++) 
	p*=baza; 
return p; 
}
int main()
{int i,t,j,fm,nr,expo2;
f>>t;
for(i=1;i<=t;i++)
{f>>nr; n=s=1;  if(prim(nr)) {n*=2; s*=++nr; } else {j=2; 
do
{fm=0;
while(nr%j==0) {fm++; nr/=j;} n*=(fm+1); s1=0; expo2=(fm+1);  do{s1+=rid(j,--expo2);}while(expo2!=0); 
s*=s1;
j++;
}while(nr!=1); 
}g<<n<<" "<<s%9973<<'\n';}
return 0;
}