Control C301C P57882


Statement
 

pdf   zip

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

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

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

Entrada

L’entrada és una seqüència de naturals n3n \ge 3.

Sortida

Escriviu una línia per a cada nn, indicant de quina classe és: popiropis, kk-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++