Cod sursa(job #2914835)

Utilizator alin.gabrielAlin Gabriel Arhip alin.gabriel Data 21 iulie 2022 00:39:44
Problema Cifra Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <fstream>
#include <string>
#include <set>
using namespace std;

int lastDigitOfSum(long n) {
    int sum = 0;
    set<int> s = {0, 1, 5, 6, 9};

    for(int i = 1 ; i <= n ; i++) {
        int lastDigit = i % 10;
        if (s.find(lastDigit) != s.end())
            sum += lastDigit;
        else {
            if (lastDigit == 4) {
                sum += 6;
            } else if (lastDigit == 2) {
                if (i % 4 == 0)
                    sum += 6;
                else 
                    sum += 4;
            }  else if (lastDigit == 3) {
                if (i % 20 == 3)
                    sum += 7;
                else 
                    sum += 3;

            } else if (lastDigit == 7) {
                if (i % 20 == 7)
                    sum += 3;
                else 
                    sum += 7;
            } else {
                if (i % 20 == 8)
                    sum += 6;
                else 
                    sum += 4;
            }
        }
    }

    return sum % 10;
}

int main() {
    ifstream fin("cifra.in");
    ofstream fout("cifra.out");
    int t;
    fin>>t;
    long v[t];
    int s[t];

    for (int i = 0; i < t; i++) {
        string n;
        fin >> n;
        v[i] = stol(n);
    }
    
    for (int i = 0; i < t; i++)
        s[i] = lastDigitOfSum(v[i]);

    for (int i = 0; i < t; i++)
        fout << s[i] << "\n";

    return 0;
}