博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 509C Sums of Digits
阅读量:7124 次
发布时间:2019-06-28

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

 题目大意:

给出一个序列,代表原序列对应位置数的每一位的数字之和,原序列单调递增,问原序列的最后一个数最小的方案每一个数是多少。

思路:贪心,从1到n,我们尽量让每个数最小就可以了。

1 #include
2 #include
3 #include
4 #include
5 #include
6 int g[200005],n,a[200005]; 7 int read(){ 8 int t=0,f=1;char ch=getchar(); 9 while (ch<'0'||ch>'9'){
if (ch=='-') f=-1;ch=getchar();}10 while ('0'<=ch&&ch<='9'){t=t*10+ch-'0';ch=getchar();}11 return t*f;12 }13 void work(int x,int y){14 if (x==y){15 g[1]++;16 int i=1;17 while (i<=g[0]||g[i]>9){18 g[i+1]+=g[i]/10;19 g[i]%=10;20 i++;21 }22 while (i>1&&g[i]==0) i--;23 g[0]=i;24 x=0;25 for (int i=1;i<=g[0];i++)26 x+=g[i];27 }28 if (x>y){29 int j=0,i;30 for (i=1;i<=g[0]&&x-j>=y;i++) j+=g[i];31 while (g[i]==9) i++;32 for(g[i--]++;i;i--) g[i]=0;33 int k=1;34 while (k<=g[0]||g[k]>9){35 g[k+1]+=g[k]/10;36 g[k]%=10;37 k++;38 }39 while (k>1&&g[k]==0) k--;40 g[0]=k;41 x=0;42 for (int i=1;i<=g[0];i++)43 x+=g[i];44 }45 int i;46 for (i=1;x
=y) g[i]+=y-x,x=y;48 else x+=9-g[i],g[i]=9;49 if (g[0]
=1;j--)57 printf("%d",g[j]); 58 puts(""); 59 }60 return 0;61 }

 

转载于:https://www.cnblogs.com/qzqzgfy/p/5630012.html

你可能感兴趣的文章
微信小程序实例-获取当前的地理位置、速度
查看>>
Cryptopp iOS 使用 RSA加密解密和签名验证签名
查看>>
前端切图
查看>>
python ConfigParser 模块
查看>>
java中是否会存在内存泄漏
查看>>
第一百三十一节,JavaScript,封装库--CSS
查看>>
apache server和tomcat集群配置一:水平负载
查看>>
Codeforces Round #394 (Div. 2) C. Dasha and Password 暴力
查看>>
Centos安装Samba共享服务器
查看>>
EF Code First 学习笔记:表映射
查看>>
EF将IEnumerable<T>类型转换为Dictionary<T,T>类型
查看>>
SQL Server里如何处理死锁
查看>>
C# Redis之ServiceStack
查看>>
swftools安装教程
查看>>
新媒体成为网民了解微信小程序的主要渠道
查看>>
NSURLRequestCachePolicy 缓存策略
查看>>
ListBox绑定一个对象
查看>>
【Java】PreparedStatement VS Statement
查看>>
cocos2d-x学习笔记
查看>>
WINWORD.EXE-损坏的图像
查看>>