Cod sursa(job #2931075)

Utilizator Stormtrooper-007Vartic Rihard Stormtrooper-007 Data 30 octombrie 2022 14:16:02
Problema Suma divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;
int lgput(int a,int b,int mod)
{
  a%=mod;
  int c=1;
    while(b>0)
  {
      if(b%2==1)
      c=(c*a)%mod;
      a=(a*a)%mod;
      b/=2;
  }
  return c;
}
int main()
{
 ifstream cin("sumdiv.in");
  ofstream cout("sumdiv.out");
  int a,b;
  cin>>a>>b;
  int d=2,nd=1,mod=9901;
  while(d*d<=a)
  {int cnt=0;
    while(a%d==0)
    {
      a=a/d;
      cnt++;
    }
    if (d%mod!=1)
      nd=nd*(lgput(d,cnt*b+1,mod)-1+mod)%mod*lgput(d-1,mod-2,mod)%mod;
    else
      nd=nd*(cnt*b+1)%mod;
    d++;
  }
  if(a>1)
  {
    if (a%mod!=1)
      nd=nd*(lgput(a,b+1,mod)-1+mod)%mod*lgput(a-1,mod-2,mod)%mod;
    else
      nd=nd*(b+1)%mod;
  }
  cout<<nd;
    return 0;
}