找到提升到某个幂的数字的最后一位数

时间:2015-12-12 05:47:54

标签: c++ math

我正在尝试使用最简单的方法找到一个数字的单位数字。我知道模幂运算。我正在尝试实现与How to find the units digit of a certain power in a simplest way类似的东西,但是我的代码显示了SPOJ中某些测试用例的错误答案。以下是SPOJ中问题的链接:http://www.spoj.com/problems/LASTDIG/

#include<iostream>
using namespace std;

int main() {
    int a2[] = {6, 2, 4, 8},
        a3[] = {1, 3, 9, 7},
        a4[] = {6, 4},
        a7[] = {1, 7, 9, 3},
        a8[] = {6, 8, 4, 2},
        a9[] = {1, 9},
        t;
    long long int b1, b2;

    cin >> t;

    while (t--) {
        cin >> b1 >> b2;
        b1 = b1 % 10;
        if (b2 == 0)
            cout << 1 << endl;
        else if (b1 == 0)
            cout << 0 << endl;
        else if (b2 == 1 || b1 == 5 || b1 == 6)
            cout << b1 << endl;
        else if (b1 == 2)
            cout << a2[b2 % 4] << endl;
        else if (b1 == 3)
            cout << a3[b2 % 4] << endl;
        else if (b1 == 4)
            cout << a4[b2 % 2] << endl;
        else if (b1 == 7)
            cout << a7[b2 % 4] << endl;
        else if (b1 == 8)
            cout << a8[b2 % 4] << endl;
        else if (b1 == 9)
            cout << a9[b2 % 2] << endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

第一

a7[]={1,7,0,3}
         ^^^

零应为9

a7[]={1,7,9,3}

和a9

a9[]={9,1}
      ^^^

应该是反向的

a9[]={1,9}