首页 > 代码库 > hdu 1061 Rightmost Digit
hdu 1061 Rightmost Digit
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1061
题目大意:n的n次方,输入个位数~
这里介绍一个小的算法:快速幂取模
首先,有n个数相乘,如s=a*a*a*a*a*a*a*a*a;假设b=a*a;则s=b*b*b*b*a;继续假设c=b*b;则s=c*c*a;继续假设d=c*c;则s=d*a;最后输出s。节省了时间。
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 int fun(int a,int b,int c) 6 { 7 int s=1; 8 while (b) 9 {10 if (b%2==1)11 s=s*a%c;12 a=(a*a)%c;13 b/=2;14 }15 return s;16 }17 int main ()18 {19 int t;20 cin>>t;21 while (t--)22 {23 int n;24 cin>>n;25 int m=fun(n%10,n,10);26 printf ("%d\n",m);27 }28 return 0;29 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。