Cod sursa(job #870924)

Utilizator Noradllrares stoica Noradll Data 4 februarie 2013 09:05:05
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb

#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main()
{
	FILE *f = fopen("cifra.in","r");
	FILE *g = fopen("cifra.out","w");
	int t;
	fscanf(f,"%d",&t);
	char numar[102];
	int count=1;
	
	while(count<=t)
	{
		fscanf(f,"%s",numar);
		int i=1;
		int ucf=0;

		int cf;

		cf = atoi(numar)%100;

		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++;
			
		}
		fprintf(g,"%d\n",ucf);
		count++;
	}
}