Uva-1583. Digit Generator

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/82025569

Uva-340. Digit Generator 题解

欢迎访问我的Uva题解目录哦https://blog.csdn.net/richenyunqi/article/details/81149109

题目描述

Uva-1583. Digit Generator题目描述

题意解析

如果数字x加上x的各位数字之和为y,则称x是y的一个生成元。给出n个数,要求找出每个数字的最小生成元,如果没有生成元输出0

算法设计

一次性列举0~100,000这些数作为生成元时对应的生成数字,并存储在一个数组中,最后查表即可。

C++代码

#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=(a);i<(b);++i)//for循环的一种用宏表示的简写方式
int A[100100];
int main(){
    _for(i,0,100000){
        string s=to_string(i);
        int k=i;
        _for(j,0,s.size()) k+=s[j]-'0';
        if(A[k]==0)
            A[k]=i;
    }
    int N,input;
    scanf("%d",&N);
    while(N--){
        scanf("%d",&input);
        printf("%d\n",A[input]);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/richenyunqi/article/details/82025569