Cod sursa(job #355144)

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