HDOJ-ACM1061(JAVA) Rightmost Digit
题意:求n的n次方的个位数(1<=N<=1,000,000,000)
第一个最愚蠢的办法就是暴力破解,没什么意义,当然,还是实现来玩玩。
以下是JAVA暴力破解:
import java.io.BufferedInputStream;
import java.util.ArrayList;
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner scan = new Scanner(new BufferedInputStream(System.in));
int m = scan.nextInt();
while(m--!=0){
int n = scan.nextInt();
double result = Math.pow(n, n);
System.out.println(result%10);
}
scan.close();
}
}
第二个思路是寻找规律:
规律:求取个位数,其实就等于 n的个位数的n次方,252^252 的个位数等于 2^252的个位数
另外: 无论n为多少,他的个位数是1-9,那么如 2 * 2 = 4 ; 2*4=8 ; 2*8 = 16 ; 2*16 = 32 ; 当 结果为 32 个位数为 2 , 那便开始了新一轮的 循环(2,4,8,6,2,4....)。
以下是JAVA实现:
import java.io.BufferedInputStream;
import java.util.ArrayList;
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner scan = new Scanner(new BufferedInputStream(System.in));
int m = scan.nextInt();
while(m--!=0){
int n = scan.nextInt();
int rightMostDigitOfN = n%10;
ArrayList<Integer> rightMostDigits = arrays.get(rightMostDigitOfN);
int size = rightMostDigits.size();
if(size == 1){
System.out.println(rightMostDigitOfN);
}else{
System.out.println(rightMostDigits.get((n-1)%size));
}
}
scan.close();
} static ArrayList<ArrayList<Integer>> arrays = getRightMostDigitArray(); static ArrayList<ArrayList<Integer>> getRightMostDigitArray(){
ArrayList<ArrayList<Integer>> arrays = new ArrayList<>();
for(int i = 0 ; i != 10 ; i ++){
ArrayList<Integer> integers = new ArrayList<>();
integers.add(i);
int n = 2;
while(true){
int rightMostDigit = (int) (Math.pow(i, n)%10);
if(rightMostDigit==i){
break;
}else{
integers.add(rightMostDigit);
}
n++;
}
arrays.add(integers);
}
return arrays;
} }
HDOJ-ACM1061(JAVA) Rightmost Digit的更多相关文章
- 【HDOJ】1061 Rightmost Digit
这道题目可以手工打表,也可以机器打表,千万不能暴力解,会TLE. #include <stdio.h> #define MAXNUM 1000000001 ][]; int main() ...
- hdoj 1061 Rightmost Digit【快速幂求模】
Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDOJ 1061 Rightmost Digit(循环问题)
Problem Description Given a positive integer N, you should output the most right digit of N^N. Input ...
- HDOJ 1061 Rightmost Digit
找出数学规律 原题: Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- Rightmost Digit
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- 快速幂 HDU 1061 Rightmost Digit *
Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDU 1061 Rightmost Digit --- 快速幂取模
HDU 1061 题目大意:给定数字n(1<=n<=1,000,000,000),求n^n%10的结果 解题思路:首先n可以很大,直接累积n^n再求模肯定是不可取的, 因为会超出数据范围, ...
- Rightmost Digit(快速幂+数学知识OR位运算) 分类: 数学 2015-07-03 14:56 4人阅读 评论(0) 收藏
C - Rightmost Digit Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- Rightmost Digit(快速幂)
Description Given a positive integer N, you should output the most right digit of N^N. ...
随机推荐
- python连接zookeeper的日志问题
用python连接zookeeper时,在终端里,一直会有zookeeper的日志冒出来,这样会很烦. -- ::,:(: Exceeded deadline by 11ms 解决方法是在连接后设置一 ...
- iOS 浅复制、深复制、完全复制的知识点梳理验证(附加归档解档)
在之前转载的一片文章中,文中对浅复制和深复制进行了详细的解读,同时还提到了深复制(one-level-deep copy).完全复制(true copy)的概念,并指出iOS开发中的深复制是单层深赋值 ...
- Java EJX
EJX http://www.docin.com/p-121548732.html
- linux sed 批量替换多个文件中的字符
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串 sed -i "s/oldst ...
- UML_时序图画法
UML建模之时序图(Sequence Diagram) 一.时序图简介(Brief introduction) 二.时序图元素(Sequence Diagram Elements) 角色(Actor) ...
- UIViewCotroller 的生命周期函数
Viewcontroller 的所有生命周期函数 重写时 一定要先写 父类 方法 就是(super +生命周期函数) LoadView ViewDidLoad ViewDidUnload: 在iOS ...
- python eval函数
eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果. 可以把字符串转为list.tuple .dict 等数据类型 1.把字符串转为字典 ####### ...
- css中文本框与按钮对不齐解决方案
我们先对对input标记设定样式,代码如下: html 代码 <form> <input type=”text” name=”text1” id=”text1” /> < ...
- node.js + gulp用JENKINS作CI编译
这里还是有点坑,要注意. 安装NODE.JS不说,GULP绿色化也不说. 但要让JENKINS识别环境变量. /etc/profile.... export NODE_HOME=/usr/local/ ...
- hdu4374One hundred layer (DP+单调队列)
http://acm.hdu.edu.cn/showproblem.php?pid=4374 去年多校的题 今年才做 不知道这一年都干嘛去了.. DP的思路很好想 dp[i][j] = max(dp[ ...