1. 程式人生 > >快速冪或找規律求a的b次方的最後一位-HDU1097

快速冪或找規律求a的b次方的最後一位-HDU1097

A hard puzzle
Problem Description
lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how to know the a^b.everybody objects to this BT problem,so lcy makes the problem easier than begin.
this puzzle describes that: gave a and b,how to know the a^b’s the last digit number.But everybody is too lazy to slove this problem,so they remit to you who is wise.

Input
There are mutiple test cases. Each test cases consists of two numbers a and b(0


#include<cstdio>  
int mod(int a,int b,int k){  
    int ans=1;  
    a=a%k;  
    while(b>0){  
        if(b%2==1) ans=(ans*a)%k;  
        b/=2;  
        a=(a*a)%k;  
    }  
    return ans;  
}  
int
main(){ int a,b; while(scanf("%d%d",&a,&b)==2) printf("%d\n",mod(a,b,10)); return 0; }

這是直接的求法。看別人的題解,竟然還有一個規律:

尾數為0,1,5,6的不管是多少次方尾數依然不變,而尾數為4和9的每2次迴圈,

2,3,7,8為每4次迴圈。迴圈結果如下:

0,1,5,6:位數永遠是0,1,5,6

2:6,2,4,8迴圈

3:1,3,9,7迴圈

4:6,4迴圈

7:1,7,9,3迴圈

8:6,8,4,2迴圈

9:1,9迴圈

好的,可以水過了:

#include<cstdio>  
int div[10]={1,1,4,4,2,1,1,4,4,2};  
int f[10][4]={{0},{1},{6,2,4,8},{1,3,9,7},{6,4},{5},{6},{1,7,9,3},{6,8,4,2},{1,9}};  
int main(){  
    int a,b;  
    while(scanf("%d%d",&a,&b)==2)  
        printf("%d\n",f[a%10][b%div[a%10]]);  
    return 0;  
} 

相關推薦

快速規律a的b次方最後-HDU1097

A hard puzzle Problem Description lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how to know the

1005 Number Sequence(長得像矩陣快速規律

A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to ca

hdu 1066 Last non-zero Digit in N! 數學,n!最後非零數

題意:求n!的最後一位非零數。(n很大,需要字元輸入) 題解: 我們發現n!末尾的0都是通過5和2想成得到的,我們將n分成20個數一組,最後剩下不足20個數。我們來討論【1-20】這20個數中含有5的數,只有5,10,15,20是5的倍數,我們還要找4個2來使之乘積得到10

HDU 1097.A hard puzzle【快速規律】【8月12】

A hard puzzle Problem Description lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how to know the a^b.eve

快速(原理,一般,遞迴,運算演算法)

  因為一開始對位運算不是很明白,加上2進位制權值忽然一說像聽了一個新詞,第一次碰見放下了,第二次也,,第三次也,今天就好好把它給看明白。 概念:快速計算底數的n次冪。 例題:(想明白就自己拿出筆紙耐心看下去,自己寫出來的才有自信說看明白了)    求a的b次方;

用正則表達式解決查指定字符串前不能出現xxx,後不能出現xxx

用法 深入學習 變量名 我們 包括 包含 針對 匹配 查找 之前項目要求做一個按指定字符串查找的工具,把所有該字段對應的數據信息都取出來。由於數據量大所以查詢結果要求精確匹配(說到這裏沒有什麽難度)。 但是還有一種符合條件的結果是該字段處於一條sql語句中,簡單的說,就是一

《資訊奧賽本通》1082:小數的某

1082:求小數的某一位 時間限制: 1000 ms 記憶體限制: 65536 KB 【題目描述】 分數a/b化為小數後,小數點後第n位的數字是多少? 【輸入】 三個正整數a,b,n,相鄰兩個數之間用單個空格隔開。0<a<b<100,1≤n≤10000。 【輸出】

OpenJudge_P7830 小數的某

總時間限制: 1000ms 記憶體限制: 65536kB 描述 分數a/b化為小數後,小數點後第n位的數字是多少? 輸入 三個正整數a,b,n,相鄰兩個數之間用單個空格隔開。0 < a &

Noi 題庫:小數的某

描述 分數a/b化為小數後,小數點後第n位的數字是多少? 輸入 三個正整數a,b,n,相鄰兩個數之間用單個空格隔開。0 < a < b < 100,1 <= n <=

POJ NOI MATH-7830 小數的某

總時間限制:1000ms記憶體限制: 65536kB描述 分數a/b化為小數後,小數點後第n位的數字是多少? 輸入三個正整數a,b,n,相鄰兩個數之間用單個空格隔開。0 < a < b < 100,1 <= n <= 10000。輸出一個數字

杭電 1061 Rightmost Digit計算N^N次方最後

題目:求N^N的最右面的那位一位,比如3*3*3=27--- 》7就是所求的 一般的,我們會寫出下面的程式碼: #include <iostream> using namespace

如何獲得Oracle當前日期的年月的第一天和最後

1.當前日期的年份第一天和最後一天 第一天 select trunc(sysdate,'y') FROM DUAL; select trunc(sysdate,'yy') FROM DUAL; select trunc(sysdate,'yyy') FROM DUAL; s

斐波那契數列第N項的最後

RT,該怎麼求呢? 首先,你可能會想到,順序遍歷求解。 利用通項公式,可以得到斐波那契序列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34... 那每一項的最後一位就是: 0, 1, 1, 2, 3, 5, 8, 3, 1, 4... 這樣做的效

mysql計算某天所在周月的第一天和最後

某一天所在周的第一天: 我們知道國外的星期的第一天是從星期天開始的,所以DAYOFWEEK(‘2017-3-10’)函式的第一天是星期天: SELECT CASE WHEN DAYNAME(DATE(‘2017-3-10’))=’Sunday’ TH

java 獲取本年本月前月的第一天和最後

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  SimpleDateFormat format2=new SimpleDa

js判斷數字字串最後

1:字串都具有length屬性,可以用str[length-1]拿到最後一個字元,但是這種寫法,IE低版本瀏覽器不支援2:str.charAt(length-1); charAt()方法支援所有瀏覽

T^T問題個位數(快速||運算||規律

原始碼培訓: 今日水題 描述 T^T這個很像一個流淚的表情是不是!其實,它是T的T次方啦~。 當T比較大的時候T^T會非常大,現在只要你求這個數的個位就可以啦! 輸入 輸入包括多組測試資料,每個測試資料只有一個數字 解題思路(一) 看到只取個位數,第一反應找規

HDU 5793 A Boring Question (規律 : 快速+乘法逆元)

cnblogs and ott miss 逆元 找規律 -- for while A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot

HDU 6198 number number number 矩陣快速 規律

for spa iostream pri amp span ios const isp   題目鏈接: http://acm.hdu.edu.cn/showproblem.php?pid=6198   題目描述: 給你一個k, 你可以用K個斐波那契數列中的數來構造一個數,

Nowcoder 北師校賽 B 外掛使用拒絕 ( k次前綴和、矩陣快速打表規律、組合數 )

HERE signed dir eof ims net logs hit vector 題目鏈接 題意 : 中文題、點鏈接 分析 : 有道題是問你不斷求前綴和後的結果 Click here 這道題問的是逆過程 分析方法雷同、可參考 Click here --------