fbpx

Problema #3100 – suma_perm_circ – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Scrieți un program care citește un număr natural n și care să calculeze și să afișeze suma S a tuturor numerelor obținute prin permutări circulare 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, reprezentând suma cerută.

Restricții și precizări

  • n are cel mult 100.000 de cifre

Exemplu

Intrare

165

Ieșire

1332

Explicație

Numere obținute din 165 prin permutări circulare sunt 165, 651 și 516, iar suma lor este 1332.

#include <bits/stdc++.h>

using namespace std;

void produs(int a[] , int &n , int m)
{
    int t = 0;
    for(int i = 1; i <= n ; i++)
    {
        long long c = 1LL * a[i] * m + t;
        a[i] = c % 10;
        t = c / 10;
    }
    while(t)
    {
        a[++n] = t % 10;
        t /= 10;
    }
}

int main()
{
    char s[100001];
    int a[100001] , sc = 0;
    cin >> s;
    int l = strlen(s);
    for(int i = 0 ; i < l ; i++)
    {
        sc += (s[i] - 48);
        a[i + 1] = 1;
    }
    produs(a , l , sc);
    for(int i = l; i >= 1; i--)
        cout << a[i];
}
Comentarii

S-ar putea sa iti placa