Pagini recente » Cod sursa (job #295987) | Cod sursa (job #2118614) | Cod sursa (job #1189688) | Cod sursa (job #48395) | Cod sursa (job #1229224)
#include <fstream>
#include <string.h>
#include <iostream>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
char c[101],x[10];
long n;
short ucp(char nr[100])
{
int cif = nr[strlen(nr)-1]-'0', cif2 = (nr[strlen(nr)-2]-'0')*10+(nr[strlen(nr)-1]-'0'),sum=0;
if(strlen(nr)==1)cif2=5;
if(cif==0) return 0;
if(cif==1) return 1;
if(cif==5) return 5;
if(cif==6) return 6;
for(int i=0;i<strlen(nr);i++)
{
sum+=nr[i]-'0';
}
if(cif==2)
{
if(cif2%4==0)return 6;
if(sum%3==0)return 8;
if(cif%2==0)return 4;
return 2;
}
if(cif==3)
{
if(cif2%4==0)return 1;
if(sum%3==0)return 7;
if(cif%2==0)return 9;
return 3;
}
if(cif==4)
{
if(cif%2==0)return 6;
return 4;
}
if(cif==7)
{
if(cif2%4==0)return 1;
if(sum%3==0)return 3;
if(cif%2==0)return 9;
return 7;
}
if(cif==8)
{
if(cif2%4==0)return 6;
if(sum%3==0)return 2;
if(cif%2==0)return 4;
return 8;
}
if(cif==9)
{
if(cif%2==0)return 1;
return 9;
}
}
void scadere (char nr[100])
{int i=1;
if(nr[strlen(nr)-1]-'0'-1>0)nr[strlen(nr)-1]=nr[strlen(nr)-1]-1;
else {while(nr[strlen(nr)-i]-'0'==0&&i<strlen(nr))
{nr[strlen(nr)-i]='9';i++;}
nr[strlen(nr)-i]-=1;
}
if(nr[0]=='0'&&nr[1]>0){nr[0]=nr[1];nr[1]=0;}
}
short uc(char nr[100])
{
short ult=0;
while(nr[0]!='0')
{
ult+=ucp(nr);
ult=ult%10;
scadere(nr);
}
return ult;
}
int main()
{
short sum;
f>>n;
f.get();
for(int i=1;i<=n;i++)
{
f.getline(c,101);
g<<uc(c)<<'\n';
}
return 0;
}