Cod sursa(job #3321691)

Utilizator bota_calinBota Calin bota_calin Data 11 noiembrie 2025 07:41:07
Problema Cifra Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.83 kb
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
ifstream fin("cifra.in");
ofstream fout("cifra.out");
bool este_gol(char s[101] )
{
    int i;
    for(i=0; i<strlen(s); i++)
    {
        if(s[i]!='0')
        {
            return false;
        }
    }
    return true;
}
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;
        if(strlen(s) == 1)
        {
            suma += cazuri[  s [ strlen(s) - 1 ]  -  '0'  ];
        }
        else
        {
            //aici iti trebuie inca un do while sirul diferit de 0

            while(este_gol(s)==false)
            {

                c = s[strlen(s) - 1] - '0';
                int nr = (s[strlen(s) - 2] - '0') * 10 + (s[strlen(s) - 1] - '0');
                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--;
                    s[strlen(s)-1]=c+'0';
                    for(int j=strlen(s)-1;j>=0;j--)
                    {
                    if(s[j]=='0')
                    {
                        s[j]='9';
                    }
                    else
                    {
                        s[j]--;
                        break;
                    }
                    }
                }

                //aici iti trebuie inca un while care sa mearga in stanga pana la prima cifra diferita de 0, sa ii scada 1
                // si apoi cand se intoarce usor spre stanga, le face pe toate 9
                //
                //}while(); asta ar fi acolada de la do while=ul mentionat mai sus

            }
        }
        fout<<suma%10 <<"\n";

    }
    return 0;
}