Cod sursa(job #1853092)

Utilizator Ionut00Bogoi Ionut Ionut00 Data 21 ianuarie 2017 13:53:40
Problema Suma divizorilor Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;
ifstream in ("sumdiv.in");
ofstream out ("sumdiv.out");
long long factor[1000] ,factorp[1000];
long long nfactor = 0 ,lim = 0;
void descompunere(long long n){
  nfactor = 0;
  lim = sqrt(n);
  if(n % 2 == 0){
    factor[0] = 2;
    nfactor = 1;
    while(n % 2 == 0){
      factorp[0]++;
      n /= 2;
    }
  }
  long long   h = 3;
  while(1 < n && h <= lim){
    if(n % h == 0){
      factor[nfactor] = h;
      nfactor++;
      while(n % h == 0){
        factorp[nfactor - 1]++;
        n /= h;
      }
    }
    h += 2;
  }
  if(1 < n){
    factor[nfactor] = n;
    factorp[nfactor]= 1;
    nfactor++;
  }
}
int main()
{
   long long n ,i ,a = 1,b ,s = 0 ,ss = 1 ,j;
    in>>n>>b;
    descompunere(n);
    for(j = 0 ;j < nfactor ; j ++){
      s = 0;
      a = 1;
      for(i = 0 ; i <= b * factorp[j] % 9900;i++){
        s = (s + a)% 9901;
        a = (a * factor[j])% 9901;
      }
      //cout<<s<<" ";
      ss = (ss * s)% 9901;
    }
    out<<ss;
    return 0;
}