http://codeforces.com/contest/509/problem/C

 题目大意:

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

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

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<iostream>
 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;i++)
47      if (9-g[i]+x>=y) g[i]+=y-x,x=y;
48          else x+=9-g[i],g[i]=9;
49     if (g[0]<i-1) g[0]=i-1;
50 }
51 int main(){
52     n=read();
53     for (int i=1;i<=n;i++) a[i]=read();
54     for (int i=1;i<=n;i++){
55         work(a[i-1],a[i]);
56         for (int j=g[0];j>=1;j--)
57          printf("%d",g[j]);
58         puts("");
59     }
60     return 0;
61 }

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

Codeforces 509C Sums of Digits相关推荐

  1. codeforces A. Jeff and Digits 解题报告

    题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这 ...

  2. CodeForces - 1373E Sum of Digits(贪心)

    题目链接:点击查看 题目大意:设 f( x ) 为 x 的数位之和,给出一个 n 和一个 k ,求  的最小 x ,若不存在,输出 -1 题目分析:因为 n 和 k 比较小,所以可以打表,当 k 为 ...

  3. 【CodeForces - 260A】Adding Digits (思维构造)

    题干: Vasya has got two number: a and b. However, Vasya finds number a too short. So he decided to rep ...

  4. codeforces E. Sum of Digits

    这题可以暴力打本地表...  等正解出来再搞正解 对于k=0 我们让9尽量多就行 这个可以特判 对于k=1 暴力打表到1e9 对于k>=2 暴力打表到1e6(发现1e6以上就没有变化了) 当然这 ...

  5. 【数位DP】CF 54C,509C,431D,628D,855E,1245F,95D

    这一次有题解了!! T1:CF54C First Digit Law title solution code T2:CF509C Sums of Digits title solution code ...

  6. codefroces13A

    题目链接http://codeforces.com/problemset/problem/13/A Numbers Problem Description Little Petya likes num ...

  7. CS61A Lab 1

    更好的阅读体验 Lab 1: Variables & Functions, Control lab01.zip What Would Python Display? (WWPD) Q1: WW ...

  8. Codeforces 348C:Subset Sums

    Codeforces 348C:Subset Sums 题目链接:http://codeforces.com/contest/348/problem/C 题目大意:给出$n$个数,$m$个集合(每个集 ...

  9. codeforces 1060b Maximum Sum of Digits(思维题)

    You are given a positive integer n Let S(x) be sum of digits in base 10 representation of x, for exa ...

最新文章

  1. 用最少的时间学最多的数据挖掘知识(附教程数据源)| CSDN博文精选
  2. Android studio 不显示自定义View 的提示
  3. Linux内核网络数据包发送(三)——IP协议层分析
  4. 开发日记-20190702 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 8
  5. 怎么样才能让自己自律起来_一个人如何才能高度自律(深度好文)
  6. Python学习笔记(四)Python函数
  7. 216. Combination Sum III
  8. 指针的指针(二级指针)本质
  9. 手把手教你 如何安装 Ubuntu(乌班图)
  10. H3C无线控制器做用户隔离和DHCP Relay的注意事项
  11. 响应式2022英文企业官网源码,感觉挺有创意的
  12. 硬盘的那些事(主分区、扩展分区、逻辑分区、活动分区、系统分区、启动分区、引导扇区、MBR等
  13. 什么是MCU、MPU、DSP与FPGA
  14. “李记餐厅”微信点餐小程序+后台管理系统
  15. 【Python教程】十八、这根本就不是我的错嘛~Python的异常处理
  16. RabbitMQ 下载安装 (window) 百度网盘
  17. 使用U盘重装win10系统
  18. 网易im 会话列表不显示的问题
  19. 主属性,范式,超码,码,非主属性,全码
  20. 数据清洗中异常值(离群值)的判别和处理方法

热门文章

  1. Reddit大热,伯克利PPT带你丝滑入门机器学习:知识点全面覆盖,笔记可搭配食用...
  2. 活动推荐 | 首届“中新人工智能高峰论坛”,与周志华、李德毅等大咖对话未来...
  3. 芯片大神Jim Keller从特斯拉离职,转投“宿敌”英特尔
  4. 旷视科技Face++进军机器人业务
  5. Mysql你应该要懂索引知识
  6. 《例说8051:单片机程序设计案例教程》——第 2 章 输出口的应用
  7. !!!SQL sever 函数表达
  8. Exchange server 2010系列教程之四 如何卸载exchange server 2010
  9. 安装VxWorks 6.6有感
  10. Redis 常用命令(学习笔记二)