题目:
题目背景
晚晚是A-SOUL的Gamer担当,具有强大的游戏时间管理能力时间管理大师,也是人菜瘾大的标准典型。
今天她想挑战一个小游戏,来证明自己作为团里Gamer担当的含金量。(KDA0.22的含金量你们懂不懂啊),但是失败了,晚晚对于后面的关卡很困惑。
游戏规则如下:将一个正整数的各位数字加起来得到一个新的数字,重复这个过程直到这个新数字变成只有一位。
例如:正整数为 1789,则 1+7+8+9=25,再2+5=7,所以最后得到数字 7。
这个游戏还剩下 n 关,你能通关余下的关卡把答案告诉晚晚吗?
输入描述
第一行包含一个整数 n,代表有 n 个关卡。(1≤n≤10^3)
对于每个关卡,仅包含一个正整数 x。(1≤x≤10^18)
输出描述
输出 n 行,每行输出一个整数,代表最后的数字。
用例输入 1
3 286 4289 1563348131
用例输出 1
7 5 8
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
// 分离数位+求和
LL f(LL x)
{
int s = 0;
while (x)
{
s += x % 10;
x /= 10;
}
return s;
}
int main()
{
int t;
scanf("%d",&t);
while (t --)
{
long long x;
scanf("%lld",&x);
while(1)
{
x = f(x); // 返回每个数位的求和
if (x >= 0 && x <= 9) break;
}
printf("%lld\n",x);
}
return 0;
}