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

Cerința
Se dau n cifre zecimale: a1, a2, … , an. Determinaţi suma: S=a1a2…an¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯+ana1…an−1¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯+⋯+a2a3…ana1¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯, în care fiecare termen este obţinut prin permutarea circulară spre dreapta a cifrelor termenului precedent cu o poziţie.

Date de intrare
Fișierul de intrare sumperm.in conține pe prima linie numărul n, iar pe a doua linie cele n cifre separate prin spații.

Date de ieșire
Fișierul de ieșire sumperm.out va conține pe prima linie numărul S, reprezentând suma calculată.

Restricții și precizări
2 ≤ n ≤ 9

Răspunsuri la întrebare

Răspuns de mocanualexandrp2ikb6
4

#include <iostream>

#include <fstream>

using namespace std;

 

ifstream f("sumperm.in");

ofstream g("sumperm.out");

 

int main()

{

   int n, a[10],p=1;

   long long s=0,nr=0;

   f>>n;

   for(int i=1;i<=n;i++)

   {

       f>>a[i];

       nr=nr*10+a[i];

       p=p*10;

   }

  /// cout<<nr<<" "<<p<<endl;

   int i;

   for( i=n;i>=1;i--)

   {

       nr=nr/10;

       nr=nr+1LL*a[i]*(p/10);

      /// cout<<nr<<" "<<s<<endl;

       s=s+nr;

   }

 ///  cout<<i;

  g<<s;

   return 0;

}

Alte întrebări interesante