求助
  • 板块学术版
  • 楼主luogu_li4zi3
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/30 11:50
  • 上次更新2024/7/30 13:58:36
查看原帖
求助
1312687
luogu_li4zi3楼主2024/7/30 11:50

我在千千蓝鲸上遇见个题(不要去找 团队内题目) 题干我复制过来了 样例我能过但是提交就超时,超了大概两百到三百毫秒

以下是题干

描述

对于一个正整数,每一次都将该数替换为它各个数位上的数字之和。然后重复这个过程直到这个数变成 1,当然也可能是无限循环而始终变不到 1,我们把通过这个过程永远变不成 1 的数称之为 无穷数。 请编写程序,判断给定的 n 个正整数中,哪些数是无穷数,哪些数不是, 是输出 YES,不是输出 NO。

输入描述

两行,第一行一个正整数 n,第二行 n 个 正整数 ai。

输出描述

n 行,对应输入的 n 个正整数是否是无穷数, 是输出 YES,不是输出 NO。

样例输入 1

2 2 19

样例输出 1

YES NO

提示

1 <= n <= 10000, 2 <= ai <= 231- 1

以下是我的代码

#include<bits/stdc++.h>
using namespace std;
int n;
int GetSum(int x){
    int sum;
    while(x){
        sum+=x%10;
        x/=10;
    }
    if(sum==10){
        return 1;
    }
    return sum;
}
bool EndlessNum(int x){
    while(x/10){
        x=GetSum(x);
    }
    if(x==1){
        return false;
    }
    return true;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        if(EndlessNum(x)){
            cout<<"YES"<<endl;
        }else{
            cout<<"NO"<<endl;
        }
    }
    return 0;
}
蒟蒻再次求助各位大佬·-·
2024/7/30 11:50
加载中...