Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include<iostream>
  2. #include<map>
  3. #include<vector>
  4.  
  5. std::map<int, int> g_cyclicMap;
  6.  
  7. void InitCyclicNumbersMap(std::map<int, int>& cyclicMap)
  8. {
  9.     for (auto i = 0; i < 10; i++)
  10.     {
  11.         if ( (i < 2) || (i > 4 && i < 7) ) cyclicMap.insert(std::pair<int, int>(i, 1));
  12.         else if ( (i > 1 && i < 4) || (i > 6 && i < 9) ) cyclicMap.insert(std::pair<int, int>(i, 4));
  13.         else if ( (i == 4) || (i == 9) ) cyclicMap.insert(std::pair<int, int>(i, 2));
  14.     }
  15. }
  16.  
  17. int PowerLastDigit(long base, long power)
  18. {  
  19.     int retValue;
  20.  
  21.     int baseUnitDigit = base % 10;
  22.     int cyclicDigit = g_cyclicMap.at(baseUnitDigit);
  23.     int reminder = power % cyclicDigit;
  24.  
  25.     if (cyclicDigit == 1)
  26.     {
  27.         retValue = baseUnitDigit;
  28.     }
  29.     else
  30.     {
  31.         retValue = pow<int>(baseUnitDigit, reminder);
  32.     }
  33.        
  34.     return retValue;
  35. }
  36.  
  37. int main()
  38. {
  39.     int result = 0;
  40.     std::vector<int> input = { 5, 2, 4 };
  41.  
  42.     InitCyclicNumbersMap(g_cyclicMap);
  43.  
  44.     for (auto i = input.size() - 1; i > 0 ; i--)
  45.     {
  46.         auto base = input[i - 1];
  47.         auto power = result;
  48.  
  49.         if (i == input.size() - 1)
  50.         {  
  51.             power = input[i];
  52.         }
  53.        
  54.         result = PowerLastDigit(base, power);
  55.     }
  56.  
  57.     std::cout << "The last digit is: " << result;
  58.  
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement