Mai intai trebuie sa te autentifici.
Cod sursa(job #771240)
Utilizator | 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;
}