Cod sursa(job #582918)

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