Cod sursa(job #464472)

Utilizator voikybodea voichita voiky Data 20 iunie 2010 12:57:20
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
#include<math.h>
using namespace std;

long long t,n[11],maxim;
bool a[1000001];
ifstream f("ssnd.in");ofstream g("ssnd.out");

void fa_ciur()
{
	long long i,j;
	for(i=2;i*i<=maxim;i++)
		if(a[i]==0)for(j=2*i;j*j<=maxim;j+=i)a[j]=1;
}
	
int main()
{
	long long i,s,j,e,nr;
	f>>t>>n[1];
	maxim=n[1];
	for(i=2;i<=t;i++){f>>n[i];if(n[i]>maxim)maxim=n[i];}
	fa_ciur();
	for(i=1;i<=t;i++)
	{
		nr=s=1;
		for(j=2;j<=n[i];j++)
			if(a[j]==0 && n[i]%j==0)
			{
				e=1;
				while(n[i]%j==0){n[i]/=j;e++;}
				nr*=e;
				s=s*((long long)pow(j,e)-1)/(j-1)%9973;
			}
		if(nr==1){nr=2;s=1+n[i];}	
		g<<nr<<' '<<s<<'\n';
	}
	f.close();g.close();
	return 0;
}