Cod sursa(job #2223011)

Utilizator stanbianca611Stan Bianca stanbianca611 Data 18 iulie 2018 20:38:48
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
using namespace std;
ifstream f("cifra.in");
ofstream g ("cifra.out");
int main()
{
    int sum, i, j, k, t, ns, nc, v[20]={1, 4, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 4, 9, 0};//ns=penultimele 2 cifre, nc=nr de cifre, v ultimela cifra a fiecarul nr la puterea egala cu valoarea sa pana la 20, pt ca 20 e multiplu de 4
    char n[101];//nr citit ca sir de caractere
    f>>t; cout<<t;
    for(k=0; k<t;k++)
    {
        f>>n;//citim fiecare nr
        nc=strlen(n);//nr de cifre ale nr
        if(nc>1)//daca are mai mult de o cifra
        {
            ns=(n[nc-1]-48)+(n[nc-2]-48)*10;//ns= ultimele 2 cifre ale sale sub forma de int
        }
        else
        {
            ns=n[0]-48;//ns e numarul sub forma de int
        }
        //acum trebuie sa vedem ultima cifra a sumei din enunt dar pentru numarul ns
        j=ns%20;//cati termeni raman dup ce impartim la 20
        sum=ns/20*4%10;//am calculat si am vazut ca ultima cifra a oricaror 20 termeni consecutivi este 4, il imultim pe acesta cu de cate ori incap 20 de termeni in ns(care e cel mult 4, deci sum da cel mult 16, asa ca impartim cu rest la 10)
        for(i=0; i<j; i++)//trecem prin toti termenii care raman la impartirea cu 20
        {
            sum=sum+v[i];//si adunam ultima cifra a fiecaruia la sum
        }
        g<<sum%10<<"\n";//sum da mai mic de 99, asa ca impartim cu rest la 10
    }

    return 0;
}