当前位置: 首页 > article >正文

题海拾贝——生成元(Digit Generator,ACM/ICPC SEOUL 2005,UVa1583)

        Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

e4dbbb7b2a3c4781b056a6cc75084bb2.gif

我的博客:<但凡.

欢迎点赞关注!

1、题目描述

        如果x加上x的各个数字之和得到y,就说x是y的生成元。给出(1<=n<=100000),求最小生成元。无解输出0。


2、思路分析

       我们首先想到的是遍历每个数, 找出他们的最小生成数。但这样的话如果我要求找五个数的最小生成数呢?我们就得遍历5次,显然这样效率不够高。所以我们不如索性一次性找到所有数的最小生成元,然后存放起来,最后查表即可。


3、题解

#include<stdio.h>
#define maxn 100000
int main()
{
    int T = 0;
    int m = 0;
    int arr[maxn] = { 0 };//初始化存放被生成数的数组
    int x = 0;
    int y = 0;
    //找出所有属于1——10000这个范围的被生成数,并记录他们的最小生成元
    for (m = 0;m < maxn;m++)//循环存入所有被生成数的最小生成元
    {
        x = m;y = m;
        while (x)//计算被生成数
        {
            y +=x % 10;
            x /= 10;
        }
        if (arr[y]==0||m<arr[y])//条件为当这个元素为0或新的被存入元素(生成元)更小
        {
            arr[y] = m;//记录这个被生成数y的最小生成元
        }
    }
    //输入要查找最小生成元的次数
    scanf_s("%d", &T);
    while (T)
    {
        //输入想要查找的元素
        scanf_s("%d", &y);
        printf("%d\n", arr[y]);
        T--;
    }
    return 0;
}

       今天的内容就分享到这,我们下期再见!


http://www.kler.cn/a/419856.html

相关文章:

  • MySQL如何区分幻读和不可重复读
  • 第31天:安全开发-JS应用WebPack打包器第三方库JQuery安装使用安全检测
  • CAD 二次开发入门与实践:以 C# 为例
  • Centos7安装MySQL8.0详细教程(压缩包安装方式)
  • wordpress网站首页底部栏显示网站备案信息
  • Linux条件变量线程池详解
  • 15.三数之和 python
  • 深度学习模型:门控循环单元(GRU)详解
  • Web基础
  • java中的运算符
  • Elasticsearch面试内容整理-面试注意事项
  • Python 深度学习框架之Keras库详解
  • AI在线免费视频工具4:AI视频编辑ai-video-composer
  • 2024.12.2工作复盘
  • Ubuntu20.04安装NVIDIA显卡驱动
  • parallelStream并行流使用踩坑,集合安全
  • 4399 Android面试题及参考答案
  • [382]基于springboot的辽B代驾管理系统
  • 论文阅读:Deep divergence-based approach to clustering
  • 【HarmonyOS】自定义相机拍照和录像 (二)之录像
  • iptables 用于设置、维护和检查 IP 数据包的过滤规则。其基本用法是通过命令行界面配置流量的过滤策略,分为以下几类规则链:INPUT(入站流量)、OU
  • WINDOWS 单链表SLIST_ENTRY使用
  • Leecode刷题C语言之N皇后②
  • gitlab自动打包python项目
  • 【vue】响应式(object.defineProperty)、可配置的参数、vue渲染机制
  • 华为HarmonyOS 让应用快速拥有账号能力 - 获取用户手机号