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( 最右边的数字)
[GeeksForGeeks] Print leftmost and rightmost nodes at each level of a binary tree.