C/C++:计算N的N次方的个位数(火眼金睛找规律,解决此题数据问题)
生活随笔
收集整理的這篇文章主要介紹了
C/C++:计算N的N次方的个位数(火眼金睛找规律,解决此题数据问题)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本題描述(源自杭電OJ):
本題分析:火眼金睛,“打表找規(guī)律”速解此題
我們都知道,此題本質(zhì)上就是相同個位數(shù)字的不斷相乘。而相同個數(shù)數(shù)字不斷相乘的結(jié)果,其個位數(shù)字呈周期性變化。
以數(shù)字3為例,第一次33=9,第二次93=7,第三次73=1,第四次13=3,回到最開始的3,因此3的循環(huán)周期為4。同樣的,0~9都有其循環(huán)周期,我們只需要找到這個循環(huán)周期,后面一切都好辦。
具體怎么辦呢?看此時指數(shù),如果指數(shù)%周期=x,那么在這個循環(huán)周期內(nèi)的第x個數(shù)就是結(jié)果個位數(shù)。
舉個例子,1233的1233次,個位數(shù)字是3,周期剛才分析過了是4,1233%4=1,循環(huán)周期內(nèi)的數(shù)分別是{3,9,7,1},第1個數(shù)字是3,因此1233的1233次的個位數(shù)就是3。
明白了這個原理,接下來我們具體講一講代碼如何實現(xiàn)!
代碼實現(xiàn):
#include<bits/stdc++.h> //(源自杭電LCY入門算法課程) using namespace std; void solve() {int n;int a[10] = {1,1,4,4,2,1,1,4,4,2}; //對應數(shù)字0~9的循環(huán)周期長度 cin >> n;int ans = 1;int p = n % 10; //找到并存放N的個位數(shù)字于p n = n % a[p]; //用n存放結(jié)果是循環(huán)周期中的第幾個數(shù) if (n == 0) //如果n=0,說明是循環(huán)周期中最后一個數(shù),因此要加上循環(huán)周期長度 n += a[p];for (int i = 1; i <= n; i++) //具體第幾個數(shù),就乘幾次初始個位數(shù) ans = (ans * p) % 10;cout << ans << "\n"; } int main() {ios::sync_with_stdio(false); //取消同步流,提高cin效率 int t;cin >> t;while (t--){solve();}return 0; }總結(jié)
以上是生活随笔為你收集整理的C/C++:计算N的N次方的个位数(火眼金睛找规律,解决此题数据问题)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构--堆Heap
- 下一篇: python3 常用模块_python3