-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathP10515.cpp
38 lines (36 loc) · 833 Bytes
/
P10515.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <stdio.h>
/*
Problem: Compute last digit of m^n.
*/
int main() {
char w[309];
while(true) {
gets(w);
int j = 0; while(!isdigit(w[j])) ++j;
int iM = j;
int lenM = 0; while(isdigit(w[j])) {++j;++lenM;};
while(!isdigit(w[j])) ++j;
int iN = j;
int lenN = 0; while(isdigit(w[j])) {++j;++lenN;};
//std::cin >> sm >> sn;
int lastDigitM = w[iM+lenM-1]-'0';
int nMod100 = w[iN+lenN-1]-'0';
if(lenN > 1)
nMod100 += 10*(w[iN+lenN-2]-'0');
if(lenN == 1 && nMod100 == 0) {
if(lenM == 1 && lastDigitM == 0)
return 0;
w[0] = '1';
w[1] = '\0';
puts(w);
continue;
}
int ret = lastDigitM;
for(int i = 0; i < (nMod100+3) % 4; ++i)
ret*=lastDigitM;
w[0] = '0' + ret%10;
w[1] = '\0';
puts(w);
}
}