Cod sursa(job #1474961)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 23 august 2015 11:38:25
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
const int lg=10000001,mod=9973;
int v[lg];
bool c[lg];
void ciur()
{
    c[0]=c[1]=1;
    for(int i=2;i*i<lg;i++)
      if(!c[i])
        for(int j=i*i;j<lg;j+=i)
          c[j]=1;
    for(int i=2;i<lg;i++)
      if(!c[i])
        v[++v[0]]=i;
}
void rez(long long n)
{
    int i;
    long long p,q,nr=1,s=1;
    for(i=1;v[i]*v[i]<=n;i++)
      if(n%v[i]==0)
      {
          for(p=1,q=v[i];n%v[i]==0;n/=v[i],p++,q*=v[i]);
          s=s*(q-1)/(v[i]-1)%mod;
          nr*=p;
      }
    if(n!=1)
    {
        s=s*(n+1)%mod;
        nr*=2;
    }
    g<<nr<<" "<<s<<"\n";
}
int main()
{
    long long t,n;
    f>>t;
    ciur();
    while(t--)
    {
        f>>n;
        rez(n);
    }
    return 0;
}