HDU Rightmost Digit
来源:互联网 发布:mac装好windows没wifi 编辑:程序博客网 时间:2024/06/06 06:23
题目描述:
给出一个n,求n^n结果最右边的数字是什么?
问题分析:
最右边的数字,是n最右边的数字进行乘法运算得到的,所以只要计算最右边数字的幂方就行了。
当n很大的时候,不可能将最右边数字相乘结果算出来,只能通过一定的规律来处理。
最右边的数字假设为m,则m的范围为1、 2 、 3 、... 、 8 、9 、0;
m = 1;无论多少都是1
m = 2; 则出现 2 4 8 6 2
m = 3; 则出现3 9 7 1 3
m = 4; 则出现4 6 4
m = 5 、6 ,则出现 5 、 6
m = 7; 则出现7 9 3 1 7
m = 8; 则出现8 4 2 6 8
m = 9; 则出现9 1 9
m = 0;为 0;
可以得出规律,一个数字的幂方,是在周期为4的循环中。所以只要判断最右边数字的幂方和4的余数就可以了。
#include <stdio.h>
#include <math.h>
/*
1 1
2 4 8 6 2
3 9 7 1 3
4 6 4
5 5
6 6
7 9 3 1 7
8 4 2 6 8
9 1 9
0 0
*/
int main()
{
unsigned long int n;
int i, m;
scanf("%d", &i);
while(i > 0)
{
scanf("%ld", &n);
m = n % 10;
n = n % 4;
if (n == 0) n = 4;
printf("%d\n", pow(m, n));
--i;
}
return 0;
}
- HDU 1061 Rightmost Digit
- hdu 1061 Rightmost Digit
- (hdu 1061)Rightmost Digit
- HDU 1061 Rightmost Digit
- HDU 1061 Rightmost Digit
- hdu rightmost digit 1061
- HDU 1061 Rightmost Digit
- HDU 1061 Rightmost Digit
- hdu 1061 Rightmost Digit
- HDU 1061 Rightmost Digit
- HDU 1061 Rightmost Digit
- HDU 1061 Rightmost Digit
- hdu 1061 Rightmost Digit
- HDU 1061 Rightmost Digit
- hdu 1061 Rightmost Digit
- hdu 1061 Rightmost Digit
- HDU 1061 Rightmost Digit
- HDU-1061-Rightmost Digit
- 987654321 问题
- swagger 的使用
- spring 属性配置
- Java---11---多线程的两种创建方式
- android:LruCache缓存小结
- HDU Rightmost Digit
- java 向上转型(upcasting)和向下转型(downcasting)区别举例详解
- C_HelloLinux
- githubz在add ssh key报错 Key is invalid. Ensure you've copied the file correctly 解决办法
- 注解
- Java线程范围内的共享数据(2)
- SAP连接数据库
- stack link
- Codility上的练习(12)