当前位置: 首页 > 工具软件 > WMQ > 使用案例 >

wmq的数学课

卫子平
2023-12-01

原文链接: wmq的数学课

上一篇: A. Shell Game

下一篇: PATB 1050. 螺旋矩阵(25)

wmq的数学课

发布时间: 2017年5月7日 22:58   最后更新: 2017年5月7日 23:01   时间限制: 1000ms   内存限制: 512M

描述

wmq选了一门非常神奇的数学课,这门课的老师经常会出一些有趣的问题。今天他们的老师布置了这样的一份作业:给定x和y,请求出x^y的个位数字是多少

输入

第一行为一个正整数T(1 \leq T \leq 1000)

之后T行每行有两个数字x和y

代表一道作业题目,x和y的含义如题目所示

其中x为不超过10^5的正整数,y为不超过10^{9}的非负整数

输出

对于每道题,给出一个一位非负整数,即这道题目的答案

样例输入1 复制

3
5 2
6 3
2 4

样例输出1

5
6
6

提示

5*5=25,个位数是5

6*6*6=216,个位数是6

2*2*2*2=16,个位数是6

注意特殊情况

#include <iostream>
#include <cstdio>

using namespace std;


//找规律,尾数的次幂有循环节 
int fun(int x, int y) {
	int ans;
	if (x == 0)
		ans = 0;
	else if (y == 0)
		ans = 1;
	else if (x == 0 || x == 5 || x == 1 || x == 6) {
		ans = x;
	} else if (x == 2) {
		int a[4] = { 2,4,8,6 };
		ans = a[(y - 1) % 4];
	} else if (x == 3) {
		int a[4] = { 3,9,7,1 };
		ans =  a[(y - 1) % 4];
	} else if (x == 4) {
		int a[4] = { 4,6 };
		ans =  a[(y - 1) % 2];
	} else if (x == 7) {
		int a[4] = { 7,9,3,1 };
		ans =  a[(y - 1) % 4];
	} else if (x == 8) {
		int a[4] = { 8,4,2,6 };
		ans =  a[(y - 1) % 4];
	} else if (x == 9) {
		int a[4] = { 9,1 };
		ans =  a[(y - 1) % 2];
	}

	return ans;
}

int main(int argc, char *argv[]) {
	int T;
	scanf("%d", &T);
	while (T--) {
		int a, b;
		scanf("%d %d", &a, &b);
		printf("%d\n",fun(a % 10, b));
	}
	return 0;
}

 类似资料: