列表

详情


NC26005. 天神的密码

描述

2018年,icebound打开了神殿。而在2019年,icebound正在试图破解天神的密码,以期获得天神的力量。

icebound发现,想要得到神的密码,必须先要完成一个祭祀仪式。在这个祭祀仪式上,我们首先会追随神的指引,得到两个正整数 N和 K。随后,我们令 ,得到天神喜欢的数字X。

利用 X,我们进行以下方式得到天神最后的密码:

步骤 1 将 X每个数位上的数字相加得到 Y。

步骤 2 令 X=Y

步骤 3 反复执行 步骤 1,直到 X只有一个数位时停止,即 。此时的 X 即为天神的密码。

比如:当 N=11,K=2 时,首先我们得到 。然后我们把 X 的各个数位上的数相加,即 Y=1+2+1=4。此时 X=Y=4,X 仅有一个数位了,所以我们停止操作,得到天神的密码为4。

icebound许诺,如果他获得了天神的力量,一定保你荣华富贵,全家幸福,还会另外送你一块金牌。所以,请你帮助他计算天神的密码。

输入描述

首先第一行一个整数 T ,代表数据组数。
随后 T 行,每行两个数 N,K ,用空格隔开。

输出描述

一行一个整数 X,表示天神的密码。

示例1

输入:

2
11 2
100 1

输出:

4
1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 348K, 提交时间: 2019-05-25 12:18:54

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	ll T;
	cin>>T;
	while(T--){
		ll n,k;
		cin>>n>>k;
		if(k==2) n=n*n;
		cout<<(n==0?0:(n-1)%9+1)<<endl;
	}
	return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 432K, 提交时间: 2022-09-27 15:34:08

#include<bits/stdc++.h>
using namespace std;
long long t,n,k;
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>n>>k;
		if(k==2)
		{
			n*=n;
		}
		cout<<(n-1)%9+1<<endl;
	}
}

Python3(3.5.2) 解法, 执行用时: 30ms, 内存消耗: 6664K, 提交时间: 2019-05-25 18:28:39

T = int(input())

for _ in range(T):
    n, k = map(int, input().split())
    print((n ** k - 1) % 9 + 1)

上一题