Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<map>
- #include<vector>
- std::map<int, int> g_cyclicMap;
- void InitCyclicNumbersMap(std::map<int, int>& cyclicMap)
- {
- for (auto i = 0; i < 10; i++)
- {
- if ( (i < 2) || (i > 4 && i < 7) ) cyclicMap.insert(std::pair<int, int>(i, 1));
- else if ( (i > 1 && i < 4) || (i > 6 && i < 9) ) cyclicMap.insert(std::pair<int, int>(i, 4));
- else if ( (i == 4) || (i == 9) ) cyclicMap.insert(std::pair<int, int>(i, 2));
- }
- }
- int PowerLastDigit(long base, long power)
- {
- int retValue;
- int baseUnitDigit = base % 10;
- int cyclicDigit = g_cyclicMap.at(baseUnitDigit);
- int reminder = power % cyclicDigit;
- if (cyclicDigit == 1)
- {
- retValue = baseUnitDigit;
- }
- else
- {
- retValue = pow<int>(baseUnitDigit, reminder);
- }
- return retValue;
- }
- int main()
- {
- int result = 0;
- std::vector<int> input = { 5, 2, 4 };
- InitCyclicNumbersMap(g_cyclicMap);
- for (auto i = input.size() - 1; i > 0 ; i--)
- {
- auto base = input[i - 1];
- auto power = result;
- if (i == input.size() - 1)
- {
- power = input[i];
- }
- result = PowerLastDigit(base, power);
- }
- std::cout << "The last digit is: " << result;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement