Cod sursa(job #3321695)

Utilizator bota_calinBota Calin bota_calin Data 11 noiembrie 2025 08:27:09
Problema Cifra Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.45 kb
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
ifstream fin("cifra.in");
ofstream fout("cifra.out");

int cazuri[10] = {0, 1, 5, 12, 18, 23, 29, 36, 42, 51};
int main()    ///cifrele se repeta din 20 in 20 de nr, deci as putea face un vector la inceput cu toate valorile
{
    char s[101];
    int t, i, c;
    fin>>t;
    fin.ignore();
    for(i=0; i<t; i++)
    {
        fin.getline(s, 100);
        int suma = 0;

        //aici iti trebuie inca un do while sirul diferit de 0

        while(strlen(s) != 0)
        {
            c = s[strlen(s) - 1] - '0';
            suma = suma % 10;
            if(strlen(s) == 1)
            {
                suma += cazuri[c];
                strcpy(s, s + 1);
            }
            else
            {
                int nr = (s[strlen(s) - 2] - '0') * 10 + c;
                while (c != 0)
                {
                    switch(c)
                    {
                    case 2:
                    case 8:
                        if(nr % 4 == 2)
                            suma += 4;
                        else
                            suma += 6;
                        break;
                    case 3:
                        if(nr % 4 == 1)
                            suma += 3;
                        else
                            suma += 7;
                        break;
                    case 7:
                        if(nr % 4 == 1)
                            suma += 7;
                        else
                            suma += 3;
                        break;
                    case 4:
                        suma += 6;
                        break;
                    default:
                        suma += c;
                        break;
                    }
                    c--;
                    nr--;
                }
                for(int j=strlen(s)-1; j>=0; j--)
                {
                    if(s[j]=='0')
                    {
                        s[j]='9';
                    }
                    else
                    {
                        s[j]--;
                        if(j == 0 && s[j] == '0')
                        {
                            strcpy(s, s + 1);
                        }
                        break;
                    }
                }

            }
        }
        fout<<suma<<"\n";
    }
    return 0;
}