2146. 【2017.6.17普及组模拟】小明解密码

题目描述

         “天阶夜色凉如水,卧看牵牛织女星。”
        小明是一个喜爱幻想的孩子。每天晚上,他都会静静地躺在家门前的草地上,抬头仰望天空,幻想着天上星星的故事,天空中,数颗星星一闪一闪地眨着眼睛,好像在回应他的遐想。前不久,小明看完了童话书中牛郎与织女的故事,很想找到天上的牛郎织女,可天上的星星那么多,哪一颗才是他们的化身呢?小明百思不得其解。
         一天晚上,小明仰望星空时,不知不觉间睡着了,梦里,他看见牛郎徘徊在喜鹊桥上。原来,牛郎遇到了一个麻烦,七月初七到了,牛郎本该与织女相会,可丧心病狂的天神不甘让牛郎织女见面,于是在喜鹊桥上安装了t个密码门。每个密码门上面有两个数n,m,而密码为n^m次方的值,牛郎需要破解所有的密码门,才能走过喜鹊桥见到织女。而牛郎本是屠夫,计算能力自然不敢恭维了,小明呢,则满心欢喜地想着听织女姐姐讲故事,根本无暇顾及破解密码。所以,作为小明的朋友,这个任务就交给你啦。

输入

从文件 a.in 中读入数据。

    第一行,一个正整数t,表示一共有t个密码门
    接下来t行,每行两个正整数n,m(n,m≤10^10),表示密码门上的数字

输出

输出到文件 a.out 中。

      t行,每行一个整数,表示密码门对应的密码,由于答案过大,你只需要输出密码的最后一位

样例输入
2
3 4
4 5

 
样例输出
1
4

 
数据范围限制

对于30%的数据,1≤t≤20,1≤n,m≤8
对于100%的数据,1≤t≤1000,1≤n,m≤10^10

思路

既然题目要求输出最后一位,我们就只需要考虑最后一位即可。

最后一位会循环,存下循环节就行。

注意:不开long long见祖宗。

代码
#include <bits/stdc++.h>
using namespace std;
int gl[10][10]={
0,0,0,0,0,0,0,0,0,0,
0,1,0,0,0,0,0,0,0,0,
0,2,4,8,6,0,0,0,0,0,
0,3,9,7,1,0,0,0,0,0,
0,4,6,0,0,0,0,0,0,0,
0,5,0,0,0,0,0,0,0,0,
0,6,0,0,0,0,0,0,0,0,
0,7,9,3,1,0,0,0,0,0,
0,8,4,2,6,0,0,0,0,0,
0,9,1,0,0,0,0,0,0,0,
},gs[10]={0,1,4,4,2,1,1,4,4,2};
int main()
{
//	freopen("a.in","r",stdin);
//	freopen("a.out","w",stdout);	
	long long t,n,m;
	cin>>t;
	for(int i=1;i<=(int)t;i++)
	{
		cin>>n>>m;
		if(n%10==0)
		{
			printf("0\n");
			continue;
		}
		int y=n%10;
		int x=(m-1)%gs[y]+1;
		printf("%d\n",gl[y][x]);
	}
	return 0;
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值