Pagini recente » Cod sursa (job #3214825) | Cod sursa (job #3140697) | Cod sursa (job #807563) | Cod sursa (job #2242619) | Cod sursa (job #2223011)
#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;
}