Control C301C P57882


Statement
 

pdf   zip

thehtml

Donat un natural n ≥ 1, sigui s(n) la suma dels seus divisors tret d’ell mateix. Diem que n ≥ 3 és un nombre popiropis si n = s(n−2) + s(n) + s(n+2). Diem que n ≥ 3 és un nombre k-popiropis si n*k = s(n−2) + s(n) + s(n+2) per a un enter k ≥ 2.

Per exemple, el nombre 133 és popiropis, ja que s(131) = 1, s(133) = 27 i s(135) = 105. D’altra banda, 132 és 3-popiropis, perquè s(130) + s(132) + s(134) = 396 = 132*3.

Feu un programa que, per a cada natural donat, escrigui si és popiropis, si és k-popiropis (i ‍amb quin valor de k), o si no és res.

Entrada

L’entrada és una seqüència de naturals n ≥ 3.

Sortida

Escriviu una línia per a cada n, indicant de quina classe és: popiropis, k-popiropis, o no res.

Observació

El vostre programa ha d’implementar i fer servir la funció

int suma_divisors(int n);

que, donat un natural |n| diferent de 0, retorna la suma dels seus divisors (tret d’ell mateix).

Public test cases
  • Input

    131
    132
    133
    134
    

    Output

    131: res
    132: 3-popiropis
    133: popiropis
    134: res
    
  • Input

    3
    80
    273
    38222
    44642
    1000000
    1629073
    8802908
    

    Output

    3: res
    80: 3-popiropis
    273: popiropis
    38222: 4-popiropis
    44642: 4-popiropis
    1000000: res
    1629073: popiropis
    8802908: 3-popiropis
    
  • Information
    Author
    Professorat de P1
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++