1.题目大意

如果a加上a的各个数字之和得到b,则说a是b的生成元。给出n其中$1\le n\le 100000$,求其最小生成元,若没有解则输出0。

2.思路

使用打表的方法打出各个数字a对应的b,存入s[b]中。

3.应注意的问题

(1) 没有解时输出0,也就意味着在开始打表前要把数组s[maxn]清零。利用memset实现,要加入string.h的头文件,而memset对数组操作时只能初始化为0或-1。

(2) 要求求出的是最小生成元,也就意味着在存入s[b]之前要有所比较。

4.代码

#include"stdio.h"
#include"string.h"
#define maxn 100005
int s[maxn];
int main()
{
int i,T,n,a,b;
memset(s,0,sizeof(s)); //数组清零
for(i = 1; i < maxn ; i++)
{
a = i;
b = i;
while(a > 0) //原数加上其各个数字之和得到a
{
b += a%10;
a /= 10;
}
if((s[b]==0) || (s[b]>i)) //确保其是最小生成元
s[b] = i;
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
printf("%d\n",s[n]);
}
return 0;
}

  

参考书目:算法竞赛入门经典(第2版) 刘汝佳 编著

UVa 1583 - Digit Generator 解题报告 - C语言的更多相关文章

  1. UVa 1583 Digit Generator --- 水题+打表

    UVa 1583 题目大意:如果x加上x的各个数字之和得到y,那么称x是y的生成元. 给定数字n,求它的最小生成元 解题思路:可以利用打表的方法,提前计算出以i为生成元的数,设为d,并保存在a[d]中 ...

  2. UVa 1583 Digit Generator(数学)

     题意 假设a加上a全部数位上的数等于b时 a称为b的generator  求给定数的最小generator 给的数n是小于100,000的  考虑到全部数位和最大的数99,999的数位和也才45 ...

  3. UVa 1583 - Digit Generator

    A+A的每一位的数字的和=B 问你每一个B对应 的最小的A 是多少 不然输出0: #include <cstdio> #include <iostream> #include ...

  4. UVa -1584 Circular Sequence 解题报告 - C语言

    1.题目大意 输入长度为n$(2\le n\le 100)$的环状DNA串,找出该DNA串字典序最小的最小表示. 2.思路 这题特别简单,一一对比不同位置开始的字符串的字典序,更新result. 3. ...

  5. UVa 340 - Master-Mind Hints 解题报告 - C语言

    1.题目大意 比较给定序列和用户猜想的序列,统计有多少数字位置正确(x),有多少数字在两个序列中都出现过(y)但位置不对. 2.思路 这题自己思考的思路跟书上给的思路差不多.第一个小问题——位置正确的 ...

  6. uva 1583 Digit Generator(Uva-1583)

    题目不再写入了,vj:https://vjudge.net/problem/UVA-1583#author=0 主要讲的是找一个数的小于它的一个数,小于它的那个数每一位加起来再加上那个数就会等于原来的 ...

  7. UVa 1583 Digit Generator WA

    #include<stdio.h> int main() { long int n,i,s=0; while(scanf("%d",&n)!=EOF) { in ...

  8. UVa 1225 - Digit Counting - ACM/ICPC Danang 2007 解题报告 - C语言

    1.题目大意 把前n$(n\le 10000)$个整数顺次写在一起:12345678910111213……计算0~9各出现了多少次. 2.思路 第一想法是打表,然而觉得稍微有点暴力.不过暂时没有想到更 ...

  9. UVa 1585 - Score - ACM/ICPC Seoul 2005 解题报告 - C语言

    1.题目大意 给出一个由O和X组成的字符串(长度为80以内),每个O的得分为目前连续出现的O的数量,X得分为0,统计得分. 2.思路 实在说不出了,这题没过脑AC的.直接贴代码吧.=_= 3.代码 # ...

随机推荐

  1. RESTful 开发风格介绍

    REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统.在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple ...

  2. centOS上的基础文件操作

    文件及文件夹的基础操作: 1: 新建     (1)在当前目录新建一个文件夹   dir foldername     (2)  新建文件:     当前目录  vi newFile.text     ...

  3. js实现QQ、微信、新浪微博分享功能

    微信分享需要手机扫描二维码,需要对url进行编码.在https协议下,扫描二维码时,浏览器打不开可能时安全证书导致的. var shareModel = { /** * 分享QQ好友 * @param ...

  4. Git命令行和Xcode结合使用(我来告诉你这行代码谁写的)

    现在一直使用Git来管理代码,对于有强迫症的我来说,依旧选择了命令行,下面这段话可以更好的解释我为什么喜欢使用终端敲命令. There are a lot of different ways to u ...

  5. Xcode9.2 添加iOS11.2以下旧版本模拟器

    问题起源 由于手边项目需要适配到iOS7, 但是手边的测试机都被更新到最新版本,所以有些潜在的bug,更不发现不了.最近就是有个用户提出一个bug,而且是致命的,app直接闪退.app闪退,最常见的无 ...

  6. Python支付接口汇总大全(包含微信、支付宝等)

    微信接口 wzhifuSDK- 由微信支付SDK 官方PHP Demo移植而来,v3.37下载地址 weixin_pay- 是一个简单的微信支付的接口 weixin_pay- 微信支付接口(V3.3. ...

  7. collections.ChainMap类合并字典或映射

    ## 使用update()方法或者ChainMap类合并字典或映射 # 使用update()方法合并 a = {'x': 1, 'z': 3} b = {'y': 2, 'z': 4} merged ...

  8. 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别

    [面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...

  9. Go搭建一个博客系统

    go语言环境就不用多说了,版本肯定越高越好,这里用go1.10 先放着

  10. 一个 lambda 表达式引起的思考

    一个 lambda表达式 引起的思考 fun = [lambda x: x*i for i in range(4)] for item in fun:    print(item(1)) 全文都是抄来 ...