Cod sursa(job #91669)

Utilizator piroslPiros Lucian pirosl Data 13 octombrie 2007 00:39:52
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include <fstream>
#include <string>

#include <stdlib.h>
#include <stdio.h>
using namespace std;


int pow[10][4];
int a10[10];
int a20[10];

int results[101];

int p[30001];

void initPow() 
{
	for(int i=1;i<=10;++i)
	{
		int a = 1;
		for(int j=0;j<4;++j) 
		{
			a *= i;
			a %=10;
			pow[i-1][j] = a;
		}
	}

	int start = 0;
	int result = 0;
	for(int j=1;j<=100;++j)
	{
		result = (result+pow[(j-1)%10][start])%10;
		start = (start+1)%4;
		results[j] = result;
	}
}

int main(void) 
{
//	ifstream in;
//	ofstream out;
//	string line;
	
	FILE* in;
	FILE* out;
	int t;
	char line[101];

	initPow();
	//in.open("cifra.in");
	//out.open("cifra.out");
	in = fopen("cifra.in", "r");
	out = fopen("cifra.out", "w");

	fscanf(in, "%d\n", &t);
	for(int i=0;i<t;++i)
	{
		//in >> line;
		fscanf(in, "%s\n", line);
		int result = 0;
		//size_t length = line.length();
		size_t length = strlen(line);
		if(length >= 2) 
		{
			int a1 = line[length - 2] - '0';
			result = 10*a1;
		}
		int a2 = line[length - 1] - '0';
		result += a2;
		p[i] =  results[result];
		//out << results[result] << endl;
	}
	
	for(int i=0;i<t;++i)
		fprintf(out, "%d\n", p[i]);

//	in.close();
//	out.close();
	fclose(in);
	fclose(out);
	return 0;
}