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

UVa1583生成元(Digit Generator)

题目

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

输入输出样例

输入

3
216
121
2005

输出 

198
0
1979

思路

       要想解决这个题目,只需要对每一个输入的值从1开始遍历找到小于它自身的生成元取最小的即可,但是这样的话每一个输入都需要枚举一次,效率太低。更好的方法是我们一次性把1到100000内的所有正整数的最小生成元都求出来,然后对于每一个输入,直接查表即可。 

代码

#include<stdio.h>
#include<string.h>
#define maxn 100005//大小比较大的数组定义在主函数外面,防止出现异常
int ans[maxn];
int main(){int T,n;memset(ans,0,sizeof(ans));//将数组每一个的值初始化为0 int m=1;for(m=1;m<maxn;m++){//计算1到100000内的所有整数的最小生成元 int x=m,y=m;while(x>0){y+=x%10;x/=10;}if(ans[y]==0||m<ans[y]){//如果当前数的生成元还没有计算,或者后面计算出来的生成元比目前的生成元小,那么改为当前值 ans[y]=m;}}//接下来对于各种输入,直接查表即可 scanf("%d",&T);while(T--){scanf("%d",&n);printf("%d\n",ans[n]);}return 0;
} 

   这个题目的重点就是打表法的使用。

http://www.lryc.cn/news/251470.html

相关文章:

  • 【Springboot+vue】如何运行springboot+vue项目
  • 拥抱变化,良心AI工具推荐
  • Tensorflow的日志log记录
  • C-语言每日刷题
  • 十五届海峡两岸电视主持新秀大会竞赛流程
  • 安全行业招聘信息汇总
  • 【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
  • Spring Data Redis切换底层Jedis 和 Lettuce实现
  • wireshark自定义协议插件开发
  • 一文读懂MongoDB的全部知识点(1),惊呆面试官。
  • 仅仅通过提示词,GPT-4可以被引导成为多个领域的特定专家
  • 23.Oracle11g的UNDO表空间
  • Mybatis 操作续集2(结合上文)
  • LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
  • 12.整数转罗马数字
  • 免费AI洗稿软件【2023最新】
  • PTA:平方回文数
  • 从“AI证件照”到“AI译制片”,爆款AIGC应用的商业化迷思
  • JAVA代码优化:Easy Excel(操作Excel文件的开源工具)
  • Linux Python ping3库使用教程(ping3命令、ping命令)
  • 分享一些基于php商城案例
  • SpringSecurity 三更草堂 学习笔记
  • 基于Java SSM仓库管理系统
  • 基于Spark对消费者行为数据进行数据分析开发案例
  • Docker镜像制作与推送
  • Pandas时序数据分析实践—基础(1)
  • 5.C转python
  • 输出SearchFacesResponse对象的JSON格式字符串回包乱码解决方案
  • P7 链表 链表头前方插入新节点
  • SCAU:主对角线上的元素之和