Cod sursa(job #366182)

Utilizator Orasanu11Orasanu Adrian Orasanu11 Data 21 noiembrie 2009 08:18:48
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
01.
#include<fstream>
02.
#include<iostream>
03.
using namespace std;
04.
long VAL[11][2];
05.
long NR[10],i,j,suma,nr,T,n;
06.
char N[102];
07.
int main()
08.
{
09.
// pt cei care vad aceasta sursa ... am calculart si mi-a iesit ...
10.
// din 200 in 200 ultima cifra va si 0
11.
// deci trebuie sa calculam suma (n%200)
12.
// facem niste alocari .. cu rezultatele (22^22 are ultima cifra 4 ca si 42^42 ...)
13.
VAL[1][0]=1;
14.
NR[1]=1;
15.
VAL[0][0]=0;
16.
NR[0]=0;
17.
VAL[2][0]=4;
18.
VAL[2][1]=2;
19.
NR[2]=2;
20.
 
21.
VAL[3][0]=3;
22.
VAL[3][1]=7;
23.
NR[3]=2;
24.
 
25.
VAL[4][0]=6;
26.
NR[4]=1;
27.
 
28.
VAL[5][0]=5;
29.
NR[5]=1;
30.
 
31.
VAL[6][0]=6;
32.
NR[6]=1;
33.
 
34.
VAL[7][0]=3;
35.
VAL[7][1]=7;
36.
NR[7]=2;
37.
 
38.
VAL[8][0]=6;
39.
VAL[8][1]=4;
40.
NR[8]=2;
41.
 
42.
VAL[9][0]=9;
43.
NR[9]=1;
44.
 
45.
// am terminat .. acu partea cea mai simpla
46.
 
47.
ifstream in("cifra.in");
48.
ofstream out("cifra.out");
49.
 
50.
in>>T;
51.
for(i=1;i<=T;i++)
52.
{
53.
in.getline(N,102);
54.
nr=N[strlen(N)-2]-'0';
55.
if(nr==0)
56.
nr=(N[strlen(N)-1]-'0')*10;
57.
else
58.
nr=nr*10+N[strlen(N)-1]-'0';
59.
// economisim timp ... suma din 20 in 20 este 1 deci ...;
60.
suma=0;
61.
suma=nr/20;
62.
nr=nr%20;
63.
for(j=1;j<=nr;j++)
64.
{
65.
suma+=VAL[j][j%NR[j]];
66.
}
67.
suma=suma%10;
68.
out<<suma<<endl;
69.
// acu suntem gata :))
70.
}
71.
out.close();
72.
in.close();
73.
 
74.
return 0;
75.
}