Cod sursa(job #870921)

Utilizator Noradllrares stoica Noradll Data 4 februarie 2013 08:58:12
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#include<fstream>
#include<string>
using namespace std;
int main()
{
	ifstream f("cifra.in");
	ofstream g("cifra.out");
	int t;
	f>>t;
	string numar;
	int count=1;
	
	while(count<=t)
	{
		f>>numar;
		int i=1;
		int ucf=0;

		int cf;
		
		if(numar.length()>1)
			cf = (numar[numar.length()-1]-'0')+(numar[numar.length()-2]-'0')*10;
		else
			cf = (numar[numar.length()-1]-'0');
		while(i<=cf)
		{
			int cifra=i%10;
			switch(cifra)
			{
			case 2:
				if(i%4==0)
				{
					ucf=(ucf+6)%10;}
				else if(i%4==1)
				{
					ucf=(ucf+2)%10;
				}
				else if(i%4==2)
				{
					ucf=(ucf+4)%10;
				}
				else
				{
					ucf=(ucf+8)%10;
				}
				break;
			case 3:
				if(i%4==0)
				{
					ucf=(ucf+1)%10;}
				else if(i%4==1)
				{
					ucf=(ucf+3)%10;
				}
				else if(i%4==2)
				{
					ucf=(ucf+9)%10;
				}
				else
				{
					ucf=(ucf+7)%10;
				}
				break;
			case 4:
				if(i%2==0)
				{
					ucf=(ucf+6)%10;}
				else
				{
					ucf=(ucf+4)%10;}
				break;

			case 0: case 1: case 5: case 6:
				ucf=(ucf+cifra)%10;
				break;

			case 7:
				if(i%4==0)
				{
					ucf=(ucf+1)%10;}
				else if(i%4==1)
				{
					ucf=(ucf+7)%10;
				}
				else if(i%4==2)
				{
					ucf=(ucf+9)%10;
				}
				else
				{
					ucf=(ucf+3)%10;
				}
				break;


			case 8:
				if(i%4==0)
				{
					ucf=(ucf+6)%10;}
				else if(i%4==1)
				{
					ucf=(ucf+8)%10;
				}
				else if(i%4==2)
				{
					ucf=(ucf+4)%10;
				}
				else
				{
					ucf=(ucf+2)%10;
				}
				break;

			case 9:

				if(i%2==0)
				{
					ucf=(ucf+1)%10;}
				else
				{
					ucf=(ucf+9)%10;}
			}
			i++;
			
		}
		g<<ucf<<endl;
		count++;
	}
}