Cod sursa(job #582872)

Utilizator informatician29kill03 informatician29 Data 16 aprilie 2011 14:05:52
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long putere,sumad,nr;
long long ridicare(int baza,int expo)
{int k;
putere=1;
for(k=1;k<=expo+1;k++)
    putere*=baza;
return putere;
}
int prim(long long numar)
{int ok,d; long long a;
ok=1;
a=sqrt(numar);
for(d=2;d<=a;d++)
    if(numar%d==0) ok=0;
return ok;
}
int main()
{int i,j,t,fm,nrd;
f>>t;
for(i=1;i<=t;i++)
{f>>nr; nrd=sumad=1; if(nr==1) {nrd*=1; sumad*=1;} else if(nr==0) {nrd*=0; sumad*=0;} else if(prim(nr)) {nrd*=2; sumad*=(1+nr); } else {j=2; 
do
{fm=0;
while(nr%j==0) {fm++; nr/=j;} nrd*=(fm+1); sumad*=(ridicare(j,fm)-1)/(j-1);
j++;
}while(nr!=1 );
}  g<<nrd<<" "<<sumad%9973<<'\n';}
return 0;
}