Cod sursa(job #3321695)
| Utilizator | 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;
}
