码迷,mamicode.com
首页 > Web开发 > 详细

hdu 1061 Rightmost Digit

时间:2016-09-16 19:48:57      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

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

该方法总结挺好的:具体参考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\n",d);
  else if(d==4||d==9)
   printf("%d\n",a[d][n%2]);
  else
   printf("%d\n",a[d][n%4]);
 }
 return 0;
}
View Code

 

hdu 1061 Rightmost Digit

标签:

原文地址:http://www.cnblogs.com/wft1990/p/5876966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!