Cod sursa(job #1519476)
Utilizator | Data | 7 noiembrie 2015 13:29:52 | |
---|---|---|---|
Problema | Cifra | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.94 kb |
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
string N;
int T,x,y,i,n,j,s;
int suma(int x,int y)
{
if(y%10==0)
s=((y/10)*7)%10;
else
{
x=y;
while(x%10!=0)
x--;
s=((s/10)*7)%10;
for(i=x;i<=y;i++)
{
if(i%10==1)
s=(s+1)%10;
else
if(i%10==2)
if(((i%100)/10)%2==1)
s=(s+6)%10;
else
s=(s+4)%10;
else
if(i%10==3)
if(((i%100)/10)%2==1)
s=(s+3)%10;
else
s=(s+7)%10;
else
if(i%10==4)
s=(s+6)%10;
else
if(i%10==5)
s=(s+5)%10;
else
if(i%10==6)
s=(s+6)%10;
else
if(i%10==7)
if(((i%100)/10)%2==1)
s=(s+7)%10;
else
s=(s+3)%10;
else
if(i%10==8)
if(((i%100)/10)%2==1)
s=(s+4)%10;
else
s=(s+6)%10;
else
if(i%10==9)
s=(s+9)%10;
}
}
return s;
}
int main()
{
ifstream f("cifra.in");
ofstream g("cifra.out");
f>>T;
for(j=0;j<=T;j++)
{
getline(f,N);
n=N.size();
s=0;
if(n>5)
{
for(i=0;i<n/2;i++)
{
y=x*100+(N[i]-'0')*10+(N[i+1]-'0');
s=(s+suma(x,y))%10;
}
x=y%100;
if(s!=0)
g<<s<<endl;
}
else
{
x=0;
for(i=0;i<n;i++)
x=x*10+(N[i]-'0');
s=suma(0,x);
if(s!=0)
g<<s<<endl;
}
}
return 0;
}