C++生成元

生成

对于正整数N,N的数字总和定义为N本身及其数字的总和。当M 是N的数字总和,我们称N为M的生成例如,245的数字总和为256(= 245 + 2 + 4 + 5)。因此,245是 256。 毫不奇怪,有些数字没有任何生成,有些数字有多个生成元。例如,216的生成器是198和207。 您将编写一个程序来查找给定整数的最小生成输入值您的程序将从标准输入中读取。输入包含T个测试用例。测试次数 情况T在输入的第一行中给出。每个测试用例需要一行包含整数N的行, 1≤N≤100,000。 输出量 您的程序将写入标准输出。每个测试用例仅打印一行。该行是 每个测试用例包含一个N的生成。如果N具有多个生成器,则打印最小的生成器。如果N 没有任何生成器,请打印“0”。

思路:

可以先用一个数组把1到100000之间的每个数是生成元的数保存在相应的位置,如数组第216个数保存198。如果没有生成元的数就用0保存。

代码:

#include <iostream>
#include <string>
#define max 100005
using namespace std; 
int main() {
 int an[max]={0};
 for(int i=1;i<max;++i)
 {
     int x=i,y=i;
     while(x>0) 
     {
         y+=x%10;
         x/=10;
    }
     if(an[y]==0||i<an[y]) an[y]=i;
 }
 int n;
 cin>>n;
 for(int i=0;i<n;++i)
 {
     int m;
     cin>>m;
     cout<<an[m]<<endl;
 }
return 0;
}

原文链接: https://www.cnblogs.com/liushipeng648/p/12628604.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/195280

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午6:56
下一篇 2023年2月12日 下午6:56

相关推荐