日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

A hard puzzle(HDU1097)(快速幂取模)

發(fā)布時間:2024/3/7 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 A hard puzzle(HDU1097)(快速幂取模) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:

HDU1097

題面:

翻譯:

問題描述
lcy給了feng5166,lwg,JGShining和Ignatius一個難題:給了a和b,如何知道a^b。每個人都反對這個BT問題,所以lcy使這個問題比開始容易。
這個難題描述的是,給定a和b,如何知道a^b的最后一位數(shù)字。但每個人都太懶了,不想解決這個問題,所以他們把這個問題交給你這個智者。

輸入
有多個測試用例。每個測試用例由兩個數(shù)字a和b組成(0<a,b<=2^30)

輸出
對于每個測試用例,您應(yīng)該輸出a^b的最后一位數(shù)字。

樣例輸入
7 66
8 800

樣例輸出
9
6

思路:

這道題目讓你求的其實就是a^b對10取模之和的結(jié)果是多少,然后我們這邊要引入兩個知識點,快速冪和快速冪取模
快速冪:

為快速求a^b,我們可以采用折半的思想:
1:當b為偶數(shù)時,a^b = = a^(b/2) * a^(b/2)
2:當b為奇數(shù)時,a^b = =a * (a^(b/2)) * (a^(b/2))

代碼塊

int quick_mi(int a,int b) {int ans=1;while(b){if(b&1)//奇數(shù)隔單,位運算更快,其實還可以寫為,b%2==1{ans=ans*a;}a=a*a;//偶數(shù)折半b=b>>1;//位運算折半,其實還可以寫為b=b/2}return ans; }

快速冪取模:

1:根據(jù)數(shù)學(xué)公式:a * b%m=(a%m)*(b%m)%m

代碼塊:

int quick_mi(int a,int b,int c) {int ans=1;while(b){if(b&1)//奇數(shù)隔單{ans=ans*a%c;}a=a*a%c;//偶數(shù)折半b=b>>1;}return ans; }

當我們把這兩個知識點搞懂了的話,這道題目就相當簡單了,我們就只需要按照第二個快速冪取余的代碼來寫這題,這題目就能輕易AC了

參考代碼:

#include<iostream> using namespace std; int main() {long long a,b,ans,i;while(cin>>a>>b){long long ans=1;while(b){if(b&1){ans=(ans%10*a)%10;}a=(a%10*a%10)%10;b=b>>1;}cout<<ans<<endl;} }

總結(jié)

以上是生活随笔為你收集整理的A hard puzzle(HDU1097)(快速幂取模)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。