hdu1061-N*N问题
2016-07-18 17:35
316 查看
1061
Problem Description
Given a positive integer N, you should output the most right digit of N^N.
Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains a single positive integer N(1<=N<=1,000,000,000).
Output
For each test case, you should output the rightmost digit of N^N.
Sample Input
2
3
4
Sample Output
7
6
Hint
In the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7.
In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6.
规律 :
个位数是它自己本身的数:0 1 5 6 9
2:2 4 8 6 //输入个位为2的数的次方永远是偶数,于是只存在输出数字为加粗的数字的情况
3:3 9 7 1
4:4 6
7:7 1
输入n保存个位:
n%10
(;´д`)ゞ错误代码↓
正确代码↓
Problem Description
Given a positive integer N, you should output the most right digit of N^N.
Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains a single positive integer N(1<=N<=1,000,000,000).
Output
For each test case, you should output the rightmost digit of N^N.
Sample Input
2
3
4
Sample Output
7
6
Hint
In the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7.
In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6.
规律 :
个位数是它自己本身的数:0 1 5 6 9
2:2 4 8 6 //输入个位为2的数的次方永远是偶数,于是只存在输出数字为加粗的数字的情况
3:3 9 7 1
4:4 6
7:7 1
输入n保存个位:
n%10
(;´д`)ゞ错误代码↓
#include<iostream> #include<string> using namespace std; int main() { int t,n; while(cin>>t) { while(t--) { cin>>n; n = n%10; //错误根源!直接将n覆盖 if(n == 0 || n == 1 || n == 5 || n == 6 || n == 9) cout<<n<<endl; if(n == 2){ if(n%4 == 2 )cout<<'4'<<endl; //假设此时n=2,那么会一直有 n%4 = 2 ,不执行else else cout<<'6'<<endl; } if(n == 3){ if(n%4 == 1)cout<<'3'<<endl; else cout<<'7'<<endl; } if(n == 4) cout<<'6'<<endl; if(n == 7){ if(n%4 == 1)cout<<'7'<<endl; else cout<<'3'<<endl; } if(n == 8){ if(n%4 == 2 )cout<<'4'<<endl; else cout<<'6'; } } } return 0; }
正确代码↓
#include<iostream> #include<string> using namespace std; int main() { int t,n,m; while(cin>>t) { while(t--) { cin>>n; m = n%10; //得用两个变量区分余数和个位 if(m == 0 || m == 1 || m == 5 || m == 6 || m == 9) cout<<m<<endl; if(m == 2){ if(n%4 == 2 )cout<<'4'<<endl; else cout<<'6'<<endl; } if(m == 3){ if(n%4 == 1)cout<<'3'<<endl; else cout<<'7'<<endl; } if(m == 4) cout<<'6'<<endl; if(m == 7){ if(n%4 == 1)cout<<'7'<<endl; else cout<<'3'<<endl; } if(m == 8){ if(n%4 == 2 )cout<<'4'<<endl; else cout<<'6'<<endl; } } } return 0; }
相关文章推荐
- 1920. Divide The Stones
- hdu1021-斐波拉契问题 找规律
- TYVJ P1875 [NOIP1999P1]Cantor表
- TYVJ P1334 powermax
- HDU 4990 (找规律 矩阵快速幂)
- 找规律 (1) 1, 2, 4, 7, 8, 11, 14, 16, 17, 19, 22, 26, 28, 29, 41, 44, ?
- hdu 1021
- Google-APAC2015-"New Years Eve"
- hdoj 1005 Number Sequence (找规律,打表)
- 河南理工的ACMer要开始组队了
- hdoj 1097 A hard puzzle (找规律)
- hdoj 2050 折线分割平面
- ZOJ1629 Counting Triangles
- POJ 2680 / ZOJ 2584 : Computer Transformation - 打表+找规律+高精度 / java大数
- HDOJ1061|找规律
- COdeforces 555 A. Case of Matryoshkas
- HDU 1076 An Easy Task
- HDU 1013 Digital Roots
- CSU 1104 盒子游戏
- UVA 679 - Dropping Balls