博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【UVA 1583】Digit Generator
阅读量:6315 次
发布时间:2019-06-22

本文共 990 字,大约阅读时间需要 3 分钟。

题意

a加上 a的各位数=b,则b是a的digitSum,a是b的generator,现在给你digitSum,让你求它的最小的generator。

分析

一种方法是:

  预处理打表,也就是把1到100000的digitSum求出来,对每个digitSum保存最小的generator。

另一种方法是:

  对digitSum-45到digitSum-1的数求它的digitSum,最先算到给定的digitSum的就是最小的generator。

  因为最多6位数,每位上的数最大是9,最多5个9,所以a的各位数之和最大是45,b比a最多多45。

代码

法一(打表运行速度更快)

#include
#include
int t,n,ds[100005];int dd(int a){ int d=0; while(a) { d+=a%10; a/=10; } return d;}int main(){ for(int i=1; i<100000; i++) { int s=i+dd(i); if(s>100000) continue; if(!ds[s]) ds[s]=i; } scanf("%d",&t); while(t--) { scanf("%d",&n); if(ds[n]) printf("%d\n",ds[n]); else printf("0\n"); } return 0;}

 

法二

#include
#include
int t,n,ok;int dd(int a){ int d=0; while(a) { d+=a%10; a/=10; } return d;}int main(){ scanf("%d",&t); while(t--) { scanf("%d",&n); ok=1; for(int i=n-45;i

 

转载地址:http://pbkaa.baihongyu.com/

你可能感兴趣的文章
剑指offer第二版-1.赋值运算符函数
查看>>
Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
查看>>
Echart:前端很好的数据图表展现工具+demo
查看>>
Linux VNC黑屏(转)
查看>>
Java反射简介
查看>>
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>
分析Ajax爬取今日头条街拍美图
查看>>
内存分布简视图
查看>>
如何学习虚拟现实技术vr? vr初级入门教程开始
查看>>
第4 章序列的应用
查看>>
初识闭包
查看>>
hdu1874畅通工程续
查看>>
rails 字符串 转化为 html
查看>>
java-学习8
查看>>
AOP动态代理
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>