A - Rightmost Digit

Posted 123-d

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A - Rightmost Digit相关的知识,希望对你有一定的参考价值。

技术图片

技术图片

 

思路:

运用快速幂。

 

代码:

#include <iostream>
#include <stdio.h>

using namespace std;
typedef long long LL;

void quick_pow(int x)

    int ans = 1, y = x;
    x = x % 10;
    while (y)
    
        if (y & 1)
            ans = (ans * x) % 10;
        y >>= 1;
        x = (x * x) % 10;
    

    printf ("%d\\n", ans);

int main()

    int a;
    while (cin >> a && a)
    
        for (int i = 1; i <= a; i++)
        
            LL b;
            cin >> b;
            quick_pow(b);
        
    

    return 0;

 

总结:

需要防止溢出。

void quick_pow(int x, int y, int mod)

    int ans = 1;
    x = x % 10;
    while (y)
    
        if (y & 1)
            ans = (ans * x) % mod;
        y >>= 1;
        x = (x * x) % mod;
    

    printf ("%d\\n", ans);

a^b 求个位的数字 中需要除以10,至于其他题目看题目要求。

每个数都除以10是为了防止溢出

 

这里的mod个人理解为是大部分按照题目要求需要除以的数,为了防止溢出。

以上是关于A - Rightmost Digit的主要内容,如果未能解决你的问题,请参考以下文章

hdu 1061 Rightmost Digit

(HDU)1061 --Rightmost Digit( 最右边的数字)

[GeeksForGeeks] Print leftmost and rightmost nodes at each level of a binary tree.

Rightmost Digit

HDU 1061: Rightmost Digit

HDU-1061-Rightmost Digit (快速幂模板)