Congettura di Lollatz

Olimpiadi Italiane a Squadre

Da qualche tempo, Giorgio si è interessato alla congettura di Lollatz.
Questa congettura afferma che, dato un quadrato perfetto N, ripetendo i seguenti due passaggi:

  • moltiplichi il numero per la sua cifra delle unità−1
  • dividi per due, arrotondando per difetto

prima o poi si arriva a un multiplo di 10.

Giorgio, tuttavia, non riesce ad interpretare i passaggi della dimostrazione del dottor Lollatz, che sembra essere composta unicamente da abbreviazioni poco leggibili, e quindi si fida poco di questo risultato.
Aiutalo a dirimere i suoi dubbi scrivendo un programma che verifichi questa congettura!

Dati in input

Il file input.txt è composto da un’unica riga contenente l’unico intero N.

Dati in output

Il file output.txt è composto da un’unica riga contenente un unico intero, la risposta a questo problema.

Assunzioni

  • 1 ≤ N ≤ 1000000.

Esempi di input/output

input.txt output.txt
4 30
100 100

Se N è un quadrato perfetto l’ultimo cifra è 0, 1, 4, 5, 6 oppure 9 e quindi…

/*
    www.valcon.it
    Olimpiadi Italiane s Squadre - Congettura di Lollatz
*/
#include 
#include  
using namespace std;

int main() 
{
    ifstream fin ( "input.txt");
    ofstream fout("output.txt");
    
    long long N;
    fin >> N;

    while(N%10 != 0)	
        N=N*(N%10-1)/2;

    fout << N;
    return 0;
}

Lascia un commento