• HDU 1061 Rightmost Digit (矩阵快速幂)


    Rightmost Digit

    http://acm.hdu.edu.cn/showproblem.php?pid=1061

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21580    Accepted Submission(s): 8242

    Problem Description
    Given a positive integer N, you should output the most right digit of N^N.
     
    Input
    The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow. Each test case contains a single positive integer N(1<=N<=1,000,000,000).
     
    Output
    For each test case, you should output the rightmost digit of N^N.
     
    Sample Input
     
    2
    3
    4
     
    Sample Output
     
    7
    6
    Hint
    In the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7. In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6.
     
     
    注意不断模10,否则可能溢出
     
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    
    int solve(int a,int b,int k){
        while(k){
            if(k&1){
                b=a*b%10;
            }
            a=a*a%10;
            k>>=1;
        }
        return b;
    }
    
    int main(){
    
        //freopen("input.txt","r",stdin);
    
        int t,n;
        scanf("%d",&t);
        while(t--){
            scanf("%d",&n);
            printf("%d\n",solve(n%10,1,n));
        }
        return 0;
    }
     
  • 相关阅读:
    hdu 4707 Pet
    hdu 3584 Cube (三维树状数组)
    poj 2155 Matrix (树状数组)
    poj 1195 Mobile phones (树状数组)
    工厂方法模式
    简单工厂模式
    关于设计模式
    UML类图
    UML
    【转载】UML用例图
  • 原文地址:https://www.cnblogs.com/jackge/p/2839045.html
Copyright © 2020-2023  润新知