Cod sursa(job #2666888)

Utilizator andrei_ciobanuciobanu andrei andrei_ciobanu Data 2 noiembrie 2020 16:18:56
Problema Suma divizorilor Scor 30
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#include <stdlib.h>

#define MOD 9901

int main()
{
    FILE *fin, *fout;
    fin = fopen("sumdiv.in", "r");
    fout = fopen("sumdiv.out", "w");
    int a, b;
    fscanf(fin, "%d%d", &a, &b);
    int x = 2, sum_div = 1;
    while (x * x <= a){
        int put = 0;
        while (a % x == 0){
            put ++;
            a /= x;
        }
        put *= b;
        int s = 1, div = x, count = 1;
        while (count <= put){
            s = (s + div) % MOD;
            div *= x;
            count++;
        }
        sum_div = (sum_div * s) % MOD;
        x ++;
    }
    if (a > 1){
            x = a;
        int put = 0;
        while (a % x == 0){
            put ++;
            a /= x;
        }
        put *= b;
        int s = 1, div = x, count = 1;
        while (count <= put){
            s = (s + div) % MOD;
            div *= x;
            count ++;
        }
        sum_div = (sum_div * s) % MOD;
    }
    fprintf(fout, "%d", sum_div);
    return 0;
}