Informatică, întrebare adresată de laurstefan2002, 8 ani în urmă

Circular #3076 de pe pbinfo
Cerința
Scrieți un program care citește un număr natural n și care să calculeze suma S a tuturor numerelor obținute prin permutări circulare la dreapta ale cifrelor lui n cu o poziție.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran numărul S, cu semnificația din enunț.

Restricții și precizări
1 ≤ n ≤ 2.000.000.000

Exemplu
Intrare

123
Ieșire

666
Explicație
S-au citit n=123. Suma calculată este S=666 (=312+231+123).

Răspunsuri la întrebare

Răspuns de Madalin77
2

Răspuns:

#include<iostream>

using namespace std;

int main(){

   

long long numar,p=1,suma=0;

   cin>>numar;

   int aux  = numar;

   int nrCifre = 0;

   numar = 0;

   while(aux){

    nrCifre++;

       numar+=aux%10;

       aux/=10;

   }

   

   for(int i = 1 ; i<=nrCifre;i++){

    suma+=numar*p;

       p*=10;

   }

   cout<<suma;

   

   return 0;

}

Explicație:

Daca esti atent si observi, nu trebuie sa faci permutarea numarului, suma cifrelor lui inmultita progresiv cu 1,10,100,..pana la ordinul numarului, va da mereu suma permutarilor lui.

Alte întrebări interesante