zoukankan      html  css  js  c++  java
  • hdu 1061 Rightmost Digit

    解决本题使用数学中的快速幂取余:

    该方法总结挺好的:具体参考http://www.cnblogs.com/PegasusWang/archive/2013/03/13/2958150.html

    #include<iostream>
    #include<cmath>
    using namespace std;
    int PowerMod(__int64 a,__int64 b,int c)//快速幂取余 
    {
        int ans=1;
        a=a%c;
        while(b>0)
        {
            if(b%2==1)//如果为奇数时,要多求一步,可以提前放到ans中 
              ans=(ans*a)%c;
            b=b/2;//不断迭代 
            a=(a*a)%c;//把(a^2)%c看成一个整体 
        }
        return ans;
    }
    int main()
    {
        int n;
        cin>>n;
        __int64 m;
        while(n--)
        {
            cin>>m;
            cout<<PowerMod(m,m,10)<<endl;
        }
        return 0;
    }
    View Code

    还有其他的方法比如数学规律等 但个人觉得这种方法稍难:

    #include<stdio.h>
    int main()
    {
     __int64 n;
     int a[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}},d,t;//找规律
     scanf("%d",&t);
     while(t--)
     {
      scanf("%I64d",&n);
      d=n%10;
      if(d==0||d==1||d==5||d==6)
       printf("%d
    ",d);
      else if(d==4||d==9)
       printf("%d
    ",a[d][n%2]);
      else
       printf("%d
    ",a[d][n%4]);
     }
     return 0;
    }
    View Code
  • 相关阅读:
    java面向对象
    Mysql 用户管理
    Mysql备份数据库
    Java方法&面向对象习题
    Mysql 用户管理
    java 方法笔记
    事物与存储过程
    多表操作
    视图 sql语句
    mongodb
  • 原文地址:https://www.cnblogs.com/wft1990/p/5876966.html
Copyright © 2011-2022 走看看