Cod sursa(job #2772355)

Utilizator sandu_stefanSandu Stefan sandu_stefan Data 31 august 2021 20:07:20
Problema Suma divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
const int C=9901;
using namespace std;
int sumdiv(int a,int b){
    int x,y;
    x=a%C;
    y=1;
    while (b!=0){
        if (b%2==1){
            y=y*x%C;
        }
        x=x*x%C;
        b=b/2;
    }
    return y;
}

int main()
{
    ifstream f("sumdiv.in");
    ofstream g("sumdiv.out");
    int a,b,p,nr,x,y;
    f>>a>>b;
    p=1;
    if (a%2==0){
        nr=0;
        while (a%2==0){
            nr=nr+1;
            a=a/2;
        }
        nr=nr*b+1;
        x=(sumdiv(2,nr)-1)%C;
        p=p*x%C;
    }
    for (int i=3;i*i<=a;i=i+2){
        if (a%i==0){
            nr=0;
            while (a%i==0){
                nr=nr+1;
                a=a/i;
            }
            nr=nr*b+1;
            x=(sumdiv(i,nr)-1)%C;
            y=sumdiv(i-1,C)%C;
            p=(((p*x%C)*y)%C)%C;
        }
    }
    if (a>1){
        p=p*(a+1)%C;
    }
    g<<p;
    return 0;
}