Cod sursa(job #2664293)

Utilizator Mihaela...Mihaela Zmeu Mihaela... Data 28 octombrie 2020 12:42:10
Problema Cifra Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include "bits/stdc++.h"

using namespace std;

string adunare( string s1, string s2)
{
    while(s1.size() < s2.size()) {
        s1="0" + s1;
    }
    while(s2.size() < s1.size()) {
        s2="0" + s2;
    }

    int m = 0, r;
    string s;
    for ( int i = s1.size() - 1; i > 0 ; i--) {
        int c1 = s1[i] - '0';
        int c2 = s2[i] - '0';
        r = (c1 + c2 + m) % 10;
        m = (c1 + c2 + m) / 10;
        s = to_string(r) + s;
    }
    int c1 = s1[0] - '0';
    int c2 = s2[0] - '0';
    r = c1 + c2 + m;
    s = to_string(r) + s;
    return s;
}

bool comparare(string s1, string s2)
{
    string s = s1;
    while(s.size() < s2.size()) {
        s="0" + s;
    }
    return s <= s2;
}

int putere (int c1, string c2)
{
    int r = 1;
    string d = "1";
    while(comparare(d,c2)) {
        r *= c1;
        r %= 10;
        d = adunare (d,"1");
    }
    return r;
}

int main()
{
    ifstream cin("cifra.in");
    ofstream cout("cifra.out");

    int t;
    cin >> t;
    vector<string> v(t);
    for(int i = 0; i < t; i++) {
        cin >> v[i];
    }
    int rs = 0;
    for (int i = 0; i < t; i++) {
        string n = "1";
        int a = 0;
        while(comparare(n,v[i])) {
            int c = n[n.size() - 1] - '0';
            int p = putere(c,n);
            a = (a + p) % 10 ;
            n = adunare (n,"1");
        }
        cout << a << '\n';
    }

    return 0;
}