[cf509C]Sums of Digits
2015-02-09 15:57
363 查看
题意
给定n个bi,表示ai的数位之和,ai严格递增 ,求使an最小的数列ai
题解
贪心,第一个数直接构造,从低位到高位,不足9直接放,大于9就放9,跳下一位,这个步骤写成过程get(x),方便调用
从第2个数开始,记delta=b[i]-b[i-1]
1.如果delta>0,就在上一个数的基础上get(delta),从低位到高位,如果当前这位dig[j]不足9就放上9-dit[j],跳下一位
2.如果delta<=0,就在上一个数的基础上找一位+1,低于这一位的都清零,具体步骤是delta+dig[j],这样直到delta>0,把dig[now]+1,delta-1,转成情况1
给定n个bi,表示ai的数位之和,ai严格递增 ,求使an最小的数列ai
题解
贪心,第一个数直接构造,从低位到高位,不足9直接放,大于9就放9,跳下一位,这个步骤写成过程get(x),方便调用
从第2个数开始,记delta=b[i]-b[i-1]
1.如果delta>0,就在上一个数的基础上get(delta),从低位到高位,如果当前这位dig[j]不足9就放上9-dit[j],跳下一位
2.如果delta<=0,就在上一个数的基础上找一位+1,低于这一位的都清零,具体步骤是delta+dig[j],这样直到delta>0,把dig[now]+1,delta-1,转成情况1
#include<cstdio> #include<cstring> #include<queue> #include<vector> #include<algorithm> using namespace std; int b[400],len,n,a[301]; void get(int num){ for (int i=1;num;++i){ while (b[i]<9 && num){ b[i]++; num--; } if (i>len && !num) len=i; } } void print(){ for (int i=len;i>0;--i) printf("%d",b[i]); puts(""); } int main(){ //freopen("xx.in","r",stdin); //freopen("xx.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); get(a[1]); print(); for (int i=2;i<=n;++i){ int delta=a[i]-a[i-1]; if (delta>0){ get(delta); print(); }else{ int k=1; while(1){ if (k>len) len=k; if (b[k]<9 && delta>0){ ++b[k]; get(delta-1); print(); break; } delta+=b[k]; b[k]=0; k++; } } } return 0; }
相关文章推荐
- C - Sums of Digits
- codeforces 509C C. Sums of Digits(数位dp+贪心+枚举)
- codeforces 289 C Sums of Digits
- Codeforces Round #289 (Div. 2, ACM ICPC Rules)C. Sums of Digits
- Codeforces 509c Sums of Digits 贪心
- 【codeforces 509C】Sums of Digits
- Codeforces Round #289 C. Sums of Digits(构造)
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) C. Sums of Digits
- Codeforces 509C Sums of Digits 贪心
- Sums of Digits - CodeForces 509 C
- [CF]Sums of Digits
- UVa 993 - Product of digits
- Reverse digits of an integer_Leetcode_#7
- Light-oj-1045 lightoj1045 - Digits of Factorial (N!不同进制的位数)
- Count the number of alphabets, spaces, digits and other characters in one line character
- 100,000 Digits of Pi
- light oj1045 - Digits of Factorial (阶乘的位数,,运用对数)
- uva 993 - Product of digits
- light oj --Digits of Factorial (一个数的位数问题以及log的公式应用)
- Uva 993 Product Of Digits