Pagini recente » Cod sursa (job #842928) | Cod sursa (job #2248768) | Cod sursa (job #3273889) | Cod sursa (job #352548) | Cod sursa (job #2958868)
//https://infoarena.ro/problema/cifra
#include <bits/stdc++.h>
using namespace std;
#define SUM 7
ifstream fin ("cifra.in");
ofstream fout ("cifra.out");
struct element
{
short int p;
short int s;
};
struct element e[10];
void setare();
int main()
{
setare();
int t;
string n;
fin>>t;
//cout<<t;
getline(fin, n);
for(int i=1;i<=t;i++)
{
int k=0,s=0;
getline(fin, n);
k=n.size();
//cout << n<<"\n";
k=k-1;
short int u=(n[k]-48);//ultimele 2 cifere
if(k>=2)
{
u=(n[k-1]-48)*10+(n[k]-48);
s=((n[k-1]-48)*SUM)%10;
//cout<<n[k-1]-48<<" "<<n[k]-48<<" ";
}
//cout<<u<<"\n";
//cout<<s<<" ";
//cout<<i<<" i";
//cout<<u<<" ";
for(int j=n[k]-48;j>=1;j--)
{
//cout<<j<<"j ";
if(e[j].s!=0)
{
if(j&1==1)
{
if(u%4==3)
{
s=(s+e[j].p)%10;
//cout<<e[j].p<<" impar p ";
}
else
{
s=(s+e[j].s)%10;
//cout<<e[j].s<<" impar s ";
}
}//impar
else
{
if(u%4==2)
{
s=(s+e[j].p)%10;
//cout<<e[j].p<<" par p ";
}
else
{
s=(s+e[j].s)%10;
//cout<<e[j].s<<"par s ";
}
}//par
}//term
else
{
s=(s+e[j].p)%10;
//cout<<e[j].p<<" nimic ";
}
u--;
}//for
fout<<s<<"\n";
}
return 0;
}
void setare()
{
e[0].p=0;
e[1].p=1;
e[2].p=4;
e[2].s=6;
e[3].p=7;
e[3].s=3;
e[4].p=6;
e[5].p=5;
e[6].p=6;
e[7].p=3;
e[7].s=7;
e[8].p=6;
e[8].s=4;
e[9].p=9;
}