Cod sursa(job #355015)

Utilizator dany123Florea Daniel dany123 Data 9 octombrie 2009 23:55:30
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<iostream>
using namespace std;
#include<fstream>
ifstream f("cifra.in");
ofstream g("cifra.out");
int t,cont1,int1,int2;
char c[101];
long int n,s;
int main () {
	f>>t;
	for (cont1=1;cont1<=t;cont1++)
	{	
		f>>c; int i=100; 
		while (c[i]<'0' || c[i]>'9') i--;
		int2=c[i]-'0'; if (i>=1) int1=c[i-1]-'0'; else int1=0;
		
		n=int1*10+int2;
		if (n%10!=0 || n==10) {s=7*(n/10); // 1-10 = 47
		if (n%10>=1) s+=1; 
		if (n%10>=2) {
			if ((n/10+2)%4==1) s+=2;
			if ((n/10+2)%4==2) s+=4;
			if ((n/10+2)%4==3) s+=8;
			if ((n/10+2)%4==0) s+=6;}
		if (n%10>=3) {
			if ((n/10+3)%4==1) s+=3;
			if ((n/10+3)%4==2) s+=9;
			if ((n/10+3)%4==3) s+=7;
			if ((n/10+3)%4==0) s+=1;}
		if (n%10>=4) {
			if ((n/10+4)%2==1) s+=4;
			if ((n/10+4)%2==0) s+=6;}
		if (n%10>=5) s+=5;
		if (n%10>=6) s+=6;
		if (n%10>=7) {
			if ((n/10+7)%4==1) s+=7;
			if ((n/10+7)%4==2) s+=9;
			if ((n/10+7)%4==3) s+=3;
			if ((n/10+7)%4==0) s+=1;}
		if (n%10>=8) {
			if ((n/10+8)%4==1) s+=8;
			if ((n/10+8)%4==2) s+=4;
			if ((n/10+8)%4==3) s+=2;
			if ((n/10+8)%4==0) s+=6;}
		if (n%10>=9) {
			if ((n/10+9)%2==1) s+=9;
			if ((n/10+9)%2==0) s+=1;}
		}
		else s=7*n/10%10; //{while (n%10==0) n/=10; 
		g<<s%10<<endl;
		}
f.close();g.close();
return 0;
}