Evo, da ne bi ispalo da sam bez veze teoretizirao, ovo je kod koji radi za to šifriranje.
Temelji se na matematičkoj formuli koja definira operator modulo a = a%b + (a/b) * b
U ovom programu, kvocijenti su stavljeni u globalnu varijablu, dakle, može se izvršiti samo dešifriranje šifriranog broja, a što je izgleda i zahtjev tog profe.
Za učiniti nešto više postoje dvije opcije:
- u ključ za šifriranje izdvojiti kvocijente
- na lijevu stranu broja nadodati kvocijente
#include <iostream>
using namespace std;
 
int kvocijenti;
int BrojZnamenki(int broj)
{
    int brojZnamenki = 0;
    while (broj>0)
 {
    broj /= 10;
    brojZnamenki++;
 }
    return brojZnamenki;
}
int Sifriranje(int broj)
{
    int brojZnamenki, sifra = 0, potencija = 1, potencija1 = 1;
    brojZnamenki = BrojZnamenki(broj);
    while (broj>0)
    {
       if(brojZnamenki % 2 == 0)
       {
          kvocijenti += (((broj % 10) + 4) / 3) * potencija1;
          sifra += ((broj % 10) + 4)%3 * potencija;
          potencija1 *= 10;
       }
      else
      {
         sifra += (broj % 10) * potencija;
      }
    potencija *= 10;
    broj /= 10;
    brojZnamenki--;
 }
     return sifra;
}
int Desifriranje(int sifriraniBroj)
{
    int brojZnamenki, desifriraniBroj = 0, potencija = 1;
    brojZnamenki = BrojZnamenki(sifriraniBroj);
    while (sifriraniBroj>0)
    {
       if(brojZnamenki % 2 == 0)
       {
          desifriraniBroj += (((kvocijenti % 10) * 3 + (sifriraniBroj % 10)) - 4) * potencija;
          kvocijenti /= 10;
       }
       else
       {
          desifriraniBroj += (sifriraniBroj % 10) * potencija;
       }
       potencija *= 10;
       sifriraniBroj /= 10;
       brojZnamenki--;
    }
    return desifriraniBroj;
}
int main()
{
    int sifriraniBroj = Sifriranje(89125381);
    cout<< sifriraniBroj << endl;
    int desifriraniBroj = Desifriranje(sifriraniBroj);
    cout<< desifriraniBroj << endl;
    return 0;
}
 
    
    
    





