HDOJ -- 1061 Rightmost Digi
来源:互联网 发布:unity3d 引擎 编辑:程序博客网 时间:2024/06/08 13:28
解题思路:快速幂运算问题,即把指数都拆成平方的形式,减少运算量。即3^3=3*3^2,4^4=(4^2)^2,5^5=5*(5^2)^2...
题目要求的是最右的一位数(即个位),所以只需将结果对十取余即可。(方法一)
当然,这道题有特殊规律:
当n =1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 ...
a = 1 4 7 6 5 6 3 6 9 0 1 6 3 6 5 6 7 4 9 0 1 4 7 6 5 6 3 6 9 0 ...
所以是以20为一个周期,直接定义一个数组,把所有情况列出即可!(方法二)
a = 1 4 7 6 5 6 3 6 9 0 1 6 3 6 5 6 7 4 9 0 1 4 7 6 5 6 3 6 9 0 ...
所以是以20为一个周期,直接定义一个数组,把所有情况列出即可!(方法二)
方法一:
#include<stdio.h> __int64 quickpow(__int64 n){ __int64 ans=1,base=n; while(n){ if(n&1){//如果n是奇数 ans=(base*ans)%10;//分离出一个底数 } base=(base*base)%10;//逐步求base的平方 n>>=1; } return ans; } int main(){ __int64 t,n;//用int型精度不准,提交时WA scanf("%I64d",&t); while(t--){ scanf("%I64d",&n); printf("%I64d\n",quickpow(n)); } return 0; }
方法二:
#include<stdio.h> int a[21] = {0,1,4,7,6,5,6,3,6,9,0,1,6,3,6,5,6,7,4,9,0};int main (){int t,n; scanf ("%d",&t) ;while (t--){scanf ("%d",&n); printf("%d\n",a[n%20]);//以二十为一个周期 }return 0 ;}
0 0
- HDOJ -- 1061 Rightmost Digi
- HDOJ 1061: Rightmost Digit
- hdoj 1061Rightmost Digit
- HDOJ 1061 Rightmost Digit
- HDOJ 1061 Rightmost Digit
- hdoj 1061 Rightmost Digit
- HDOJ 1061 - Rightmost Digit
- HDOJ--1061--Rightmost Digit
- HDOJ 1061Rightmost Digit
- HDOJ 1061 Rightmost Digit
- hdoj 1061 Rightmost Digit
- Rightmost Digit hdoj 1061
- HDOJ--1061--Rightmost Digit
- HDOJ 1061 Rightmost Digit
- hdoj-1061-Rightmost Digit
- HDOJ-1061 Rightmost Digit
- hdoj 1061 Rightmost Digit
- HDOJ-1061 Rightmost Digit
- MyBatis分页的简单实现
- 杭电5645之DZY Loves Balls
- 二叉搜索树的插入和删除结点操作以及iterator的构造
- SpringMVC个人零碎总结
- 手机浏览器上的特殊效果,如拨号、跳转地图app等
- HDOJ -- 1061 Rightmost Digi
- 1587 - Box
- Java 键树---字典树(小词典)的实现
- jQuery 怎么实现点击页面其他地方隐藏菜单?
- 深入理解java虚拟机(三):String.intern()-字符串常量池
- Python:时间模块:time和datetime
- 小白笔记----------------判断一个数是不是某个数的次方
- Android——《第一行代码》
- 线程安全和线程同步Synchronized