Cod sursa(job #1415715)
Utilizator | Data | 5 aprilie 2015 22:46:20 | |
---|---|---|---|
Problema | Cifra | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 4.16 kb |
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
int t;
char n[100];
int uc=0;
void ucifra()
{
int ultim;
int x=strlen(n);
if(n[x-1]=='1')
{
uc++;
uc=uc%10;
}
else
if(n[x-1]=='2')
{
if(x>=2)
ultim=atoi(n+x-2);
else
ultim=atoi(n);
if(ultim%4==1)
{
uc+=2;
uc=uc%10;
}
else
if(ultim%4==2)
{
uc+=4;
uc=uc%10;
}
else
if(ultim%4==3)
{
uc+=8;
uc=uc%10;
}
else
if(ultim%4==0)
{
uc+=6;
uc=uc%10;
}
}
else
if(n[x-1]=='3')
{
if(x>=2)
ultim=atoi(n+x-2);
else
ultim=atoi(n);
if(ultim%4==1)
{
uc+=3;
uc=uc%10;
}
else
if(ultim%4==2)
{
uc+=9;
uc=uc%10;
}
else
if(ultim%4==3)
{
uc+=7;
uc=uc%10;
}
else
if(ultim%4==0)
{
uc+=1;
uc=uc%10;
}
}
else
if(n[x-1]=='4')
{
ultim=atoi(n+x-1);
if(ultim%2==0)
{
uc+=6;
uc=uc%10;
}
else
{
uc+=4;
uc=uc%10;
}
}
else
if(n[x-1]=='5')
{
uc+=5;
uc=uc%10;
}
else
if(n[x-1]=='6')
{
uc+=6;
uc=uc%10;
}
else
if(n[x-1]=='7')
{
if(x>=2)
ultim=atoi(n+x-2);
else
ultim=atoi(n);
if(ultim%4==1)
{
uc+=7;
uc=uc%10;
}
else
if(ultim%4==2)
{
uc+=3;
uc=uc%10;
}
else
if(ultim%4==3)
{
uc+=9;
uc=uc%10;
}
else
if(ultim%4==0)
{
uc+=1;
uc=uc%10;
}
}
else
if(n[x-1]=='8')
{
if(x>=2)
ultim=atoi(n+x-2);
else
ultim=atoi(n);
if(ultim%4==1)
{
uc+=8;
uc=uc%10;
}
else
if(ultim%4==2)
{
uc+=4;
uc=uc%10;
}
else
if(ultim%4==3)
{
uc+=2;
uc=uc%10;
}
else
if(ultim%4==0)
{
uc+=6;
uc=uc%10;
}
}
else
if(n[x-1]=='9')
{
ultim=atoi(n+x-1);
if(ultim%2==0)
{
uc+=1;
uc=uc%10;
}
else
{
uc+=9;
uc=uc%10;
}
}
}
void loop()
{
if(n[strlen(n)-1]=='0')
{
int x=strlen(n)-1;
while((n[x]=='0')&&(x>=1))
{
n[x]='9';
x--;
}
if(strlen(n)-1>=1)
n[x]--;
}
else
n[strlen(n)-1]--;
if(n[0]=='0')
strcpy(n,n+1);
}
int main()
{
f>>t;
for(int i=1;i<=t;i++)
{
f>>n;
uc=0;
while(n[0]!=NULL)
{
ucifra();
loop();
}
g<<uc<<endl;
}
f.close();
g.close();
return 0;
}