如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求最小
生成元。无解输出0。例如,n=216,121,2005时的解分别为198,0,1979。

先附上自己的想法,暴力枚举

由于每个n对应的x必然大于 n - 9*len(n);
所以将枚举范围缩小

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//优化范围,(枚举法)
int main(){int nn;int n;scanf("%d", &nn);while(nn--){scanf("%d", &n);int flag = 1;int tn = n, len = 0;while(tn){tn = tn / 10;len++;}for(int i = n - 9*len; i < n; i++){//只需枚举 n-9*len(n)~n-1的所有数字即可 int temp = i, sum = 0;for(int tcnt = 1; tcnt <= len; tcnt++){sum += (temp%10);temp/=10;}if(n == (i + sum)){printf("%d\n", i);flag = 0;break;}}if(flag)printf("0\n");}return 0;
}

然后再来试试打表法

//打表法
#include<stdio.h>
#include<string.h>
#define MAX 100005
int num[MAX];int main(){//打表预处理memset(num, 0, sizeof(num));for(int i = 1; i <= 100000; i++){int x = i;int sum = i;while(x){sum += (x%10);x /= 10;}if(!num[sum])num[sum] = i;}int T;int n;scanf("%d", &T);while(T--){scanf("%d", &n);printf("%d\n", num[n]);}return 0;
}


打表 0.020
枚举 0.040

还是打表香!

例题3-5 生成元(Digit Generator, ACM/ICPC Seoul 2005, UVa1583)相关推荐

  1. 寻找生成元问题解决(Digit Generator,ACM/ICPC Seoul 2005, UVa1583)

    问题描述:如果x加上x的各个数字之和得到y,就说x是y的生成元.给出n(1<=n<=10000),求最小生成元.无解时输出0.例如 n = 216,121,2005 时的解分别为198,0 ...

  2. 《算法竞赛入门经典》 例题3-5 生成元 (Digit Generator, ACM ICPC Seoul 2005,UVa)

    原题及翻译 For a positive integer N , the digit-sum of N is defined as the sum of N itself and its digits ...

  3. 生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)

    生成元:如果 x 加上 x 各个数字之和得到y,则说x是y的生成元. n(1<=n<=100000),求最小生成元,无解输出0. 例如:n=216 , 解是:198 198+1+9+8=2 ...

  4. 得分(Score,ACM/ICPC Seoul 2005,UVa1585)

    给出一个由O和X组成的串(长度为1~80),统计得分.每个O的得分为目前连续出现的O的个数,X的得分为0.例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3. 输入样例 5 OO ...

  5. 例题 3-5 生成元 digit generator

    1 #include<stdio.h> 2 #include<string.h> 3 #define maxn 100005 4 int ans[maxn]; //类似于 比较 ...

  6. 《算法竞赛入门经典》 例题 4-4 信息编码 (Message Decoding,ACM,ICPC World Finals 1991,UVa 213)

    原题及翻译 Some message encoding schemes require that an encoded message be sent in two parts. 某些消息编码方案要求 ...

  7. 习题3-3 数数字(Digit Counting , ACM/ICPC Danang 2007, UVa1225)

    前n(n≤10000)个整数顺次写在一起:123456789101112-数一数0-9各出现多少次 (输出10个整数,分别是0,1,-,9出现的次数). 原题链接:https://vjudge.net ...

  8. 例题3-6 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)

    长度为n的环状串有n种表示法,分别为从某 个位置开始顺时针得到.例如,图3-4的环状串 有10种表示: CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等.在这些表示法中,字典序最小的 ...

  9. 《算法竞赛入门经典》习题3-1 得分(Score,ACM、ICPC Seoul 2005,UVa1585)

    原题及翻译 There is an objective test result such as "OOXXOXXOOO". 有一个客观的测试结果,比如"ooxxoxoo& ...

最新文章

  1. 品友互动入榜“AI First——2017-2018年中国人工智能先行企业榜TOP10”
  2. 十进制转任意进制-数论
  3. android adb移植到arm,android-ndk – 为arm处理器构建android adb
  4. 《剑指 Offer I》刷题笔记 41 ~ 50 题
  5. 【C语言】实现简易计算器
  6. 直觉模糊有计算机知识嘛,直觉模糊集理论及应用 上册
  7. Springboot接入阿里云物联网SDK实现控制网络继电器通断
  8. 微信小程序|基于小程序实现打卡功能
  9. halcon获取图像中心点_Halcon学习之六:获取Image图像中Region区域的特征参数
  10. Excel 删除一行的快捷键
  11. 关于Visual Studio 中“scanf”输入报错的解决方法
  12. 程序猿致富之路——(投资理财篇)
  13. 线阵相机的优势是什么?如何选择线阵相机?
  14. python绘图练习——股票分析(二):风险分析与蒙特卡罗模拟
  15. 案例3-1-1 构建旁挂二层组网隧道转发WLAN
  16. Rock pi E 初始化 + 安装 tensorflow
  17. 将一个不用的笔记本(ipad、甚至手机也可以【能访问浏览器就可以】)当做主机扩展的显示器(将任何设备转换为电脑的辅助屏幕)deskreen
  18. 练习:人人网注册页面
  19. 【PS】60套精选品牌VI样机PSD素材
  20. 【数据结构与算法学习笔记001】Kalman滤波

热门文章

  1. OpenCV二值图像分析之形态学应用技巧
  2. 《数据安全管理办法(征求意见稿)》发布 为个人数据安全加把锁
  3. 微信小程序如何使用iconfont阿里巴巴图标库?
  4. 黑夜中也健步如飞的路
  5. 抽点时间让我们一起来学linux系统
  6. Mac OS X的快捷键
  7. google guava工具包collect包HashMultiMap基本用法
  8. IT十八掌作业_java基础第十八天_项目完善
  9. Backbone的写类方式
  10. Cortex-M0 LPC11U 中断向量