Cod sursa(job #771240)

Utilizator misinozzz zzz misino Data 25 iulie 2012 12:09:31
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
#define MOD 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int i,j,n,s,sum,suma,nr,nd;
long long x;
int v[1000000];
bool a[1000001];
void ciur()
{int i,j;
v[1]=2;
for(i=3;i<=350;i=i+2)
	if(a[i]==0)
		for(j=i*i;j<=100001;j=j+i)
			a[j]=1;
nr=1;
for(i=3;i<=100001;i=i+2)
	if(a[i]==0)
		++nr,v[nr]=i;
}
int main()
{f>>n;
ciur();
for(;n;--n)
{f>>x;
s=1;
nd=1;
for(j=1;v[j-1]*v[j-1]<x&&x!=1;++j)
	if(x%v[j]==0)
	{nr=0;
	sum=1;
	suma=0;
	while(x%v[j]==0)
	{suma+=sum;
	suma%=MOD;
	sum=sum*v[j];
	s%=MOD;
	++nr;
	x/=v[j];
	}
	nd*=(nr+1);
	suma=(suma+sum)%MOD;
	s=s*suma;
	s=s%MOD;
	}
if(x-1)
{nd*=2;
s=(s*(x+1))%MOD;
}
g<<nd<<' '<<s<<'\n';
}
return 0;
}