题目链接:https://ac.nowcoder.com/acm/contest/903/H(牛客)
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 ,用空格隔开。
1≤T≤201≤T≤20,1≤N≤1091≤N≤109,1≤K≤2
输出描述:
一行一个整数 X,表示天神的密码。
示例:
输入:
2 11 2 100 1
输出:
4 1
这道题,非常水,但是比赛时,我和队友愣是一直wa,wa,wa,没看清题意也是没谁了!
这道题的输入描述明确说了:1<=k<=2,所以,只用考虑次方为2的情况就行了,次方为1就是它自身呀!!!
awsl
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int T;
cin >> T;
for(int i=0;i<T;i++)
{
long long N,K,x,y;
cin >> N >> K;
if(K==2)
{
x=N*N;
}
else
{
x=N;
}//就是这一步,不过也是第一次见识到满足范围大了也不行的
// x=pow(N,K);没错,我之前的这一步是这样的 ╮(??? ????)╭
while(x>=10)
{
y=0;
while(x)
{
y+=x%10;
x/=10;
}
x=y;
}
cout << x << endl;
}
}