Cod sursa(job #2511447)

Utilizator MihclerioVladimir Chim Mihclerio Data 18 decembrie 2019 23:24:52
Problema Suma si numarul divizorilor Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include<bits/stdc++.h>

#define all(s) s.begin(),s.end()
#define rc(x) return cout<<x<<endl,0
#define forn(i,n) for(int i=0;i<int(n);i++)

#define pb push_back
#define mp make_pair
#define fr first
#define sc second

typedef long long ll;
typedef long double ld;

const int nmax=1025;
const int mod=9973;
const ll inf=0x3f3f3f3f3f3f3f3f;

using namespace std;

int main()
{
  ios_base::sync_with_stdio(0); cin.tie(0);
  freopen("ssnd.in","r",stdin);
  freopen("ssnd.out","w",stdout);
  int t;
  cin>>t;
  while(t--)
  {
    ll x;
    cin>>x;
    ll p=2;
    ll nrd=1,sum=1;
    while(x>1)
    {
      ll nr=0,num=1;
      while(x%p==0)
      {
        nr++;
        num=(num*p)%mod;
        x/=p;
      }
      nrd=(nrd*(nr+1))%mod;
      num=(num*p-1)%mod;
      int a=p-1,b=mod-2,sol=1;
      while(b)
      {
        if(b%2) sol=(sol*a)%mod;
        a=(a*a)%mod;
        b/=2;
      }
      sum=(sum*(sol*num)%mod)%mod;
      p++;
      if(p*p>x) p=x;
    }
    cout<<nrd<<" "<<sum<<"\n";
  }
}