Cod sursa(job #2138246)
| Utilizator | Data | 21 februarie 2018 14:47:08 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.12 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long i,j,s,divx,n,p,ii,t,p1,h,aux,q;
int a[1000001];
bool v[10000000];
int main()
{
q=0;
for(i=2; i<=1000000; i++)
{
if(v[i]==0)
{
for(j=i*i; j<=1000000; j=j+i)
{
v[j]=1;
}
q++;
a[q]=i;
}
}
f>>t;
for(ii=1; ii<=t; ii++)
{
divx=1;
s=1;
f>>n;
i=2;
q=1;
while(i*i<=n)
{
aux=1;
p=0;
while(n%i==0)
{
p++;
aux=aux*i;
n=n/i;
}
if(p)
{
aux=aux*i;
p++;
divx=divx*p;
s=(s*((aux-1)/(i-1)))%9973;
}
q++;
i=a[q];
}
if(n!=1)
{
divx=divx*2;
p=((n*n)-1)/(n-1);
s=(s*p)%9973;
}
g<<divx<<" "<<s%9973<<endl;
}
}
