关闭

hdoj 1061 Rightmost Digit

493人阅读 评论(0) 收藏 举报

思路:对于每个数字,得到i次方之后(i=1,2,3...),你会发现个位数的值是循环的。不管多大的数,n次方之后,个位数字只与个位数有关。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>

using namespace std;

int rdigit[11][10] = {{0,0},{1,1},{1,2,4,8,6},{1,3,9,7,1},{1,4,6},{1,5},{1,6},{1,7,9,3,1},{1,8,4,2,6},{1,9,1}};
int num[11] = {1,1,4,4,2,1,1,4,4,2};

int main()
{
    int t, n, d, cnt;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        d = n%10;
        cnt = n%num[d];
        if(cnt == 0)
            cnt = num[d];
        printf("%d\n", rdigit[d][cnt]);
    }
    return 0;
}


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:103824次
    • 积分:1883
    • 等级:
    • 排名:千里之外
    • 原创:83篇
    • 转载:6篇
    • 译文:0篇
    • 评论:13条