think:
1 面对这个题目,一开始可能会先考虑直接算,但是再分析就会发现一旦展开来算,估计内存和时间都会超,因此再分析时候有更合适的方法,发现其实题目只需要8^n的个位数字,这就意味着或许不用全部展开来算,再分析一下又发现第n位的个位数字只需要第n-1位的个位数字乘以8取余即可,这时候动笔写一写会发现这其实是规律的变化,如下
0->1
1->8
2->4
3->2
4->6
5->8
…
2因此其实只需额外考虑8^0这种情况,其余情况当n和4取余发现其实是规律性变化,有点体现了数学中的数学归纳法思想
不得不放弃、祝你元宵节快乐!
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
又到了一年一度的元宵节啦!一心想吃到汤圆的 cyk 看着 Stone 一碗又一碗地吃汤圆羡慕不已。
cyk 发现 Stone 吃汤圆是有规律的,第 n 碗内会有 8^n 个汤圆。Stone 看到 cyk 馋得不行,便决定送给他几个汤圆,其数量为自己碗里汤圆数量的个位数。
已知当前 Stone 正在吃第 n 碗,cyk 想知道自己能获得几个汤圆?
Input
多组输入,首先输入一行 T (1 <= T <= 1000),表示数据组数。
对于每组数据,输入一个整数 n (0 <= n <= 10^6)。
Output
对于每组数据,输出一行一个整数,代表答案。
Example Input
3
1
2
3
Example Output
8
4
2
Hint
n = 1 时,Stone 有 8^1 = 8 个汤圆,他会送出 8 个汤圆。
n = 2 时,Stone 有 8^2 = 64 个汤圆,他会送出 4 个汤圆。
n = 3 时,Stone 有 8^3 = 512 个汤圆,他会送出 2 个汤圆。
Author
「2017年寒假集训 阶段测试赛2 - 元宵节专场」不得不放弃、
以下为accepted代码
#include <stdio.h>
int main()
{
int T, n;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
if(n == 0)
printf("1\n");
else
{
if(n % 4 == 1)
printf("8\n");
else if(n % 4 == 2)
printf("4\n");
else if(n % 4 == 3)
printf("2\n");
else if(n % 4 == 0)
printf("6\n");
}
}
return 0;
}
/***************************************************
User name: jk160630
Result: Accepted
Take time: 0ms
Take Memory: 108KB
Submit time: 2017-02-13 17:11:19
****************************************************/