Digit-Sum(HDU - 5710)
Posted lemon-jade
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Digit-Sum(HDU - 5710)相关的知识,希望对你有一定的参考价值。
规律题
对x (0-4) 来说 ,x对S(2n)的贡献为2*x ,对x (5-9) ,x对s(2n)的贡献为2*x-9
我们假设x(5-9)的个数为l个,则S(2n)=2S(n)-9l , 与a*S(n)=b*S(2n) 合并后 式子为S(n)*(2b-a)=9bl
S(n):l = 9b:(2b-a)
即S(n)=9b/gcd , l=(2b-a)/gcd
如果5*l > s || l<0 输出0
否则,贪心,数的大尽量往后放
c++ code:
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int N=1000; int main() { int digs[N]; int t; scanf("%d",&t); while(t--) { int a,b; scanf("%d%d",&a,&b); int s=9*b,l=2*b-a; if(5*l>s || l<0) puts("0"); else{ int g=__gcd(s,l); l/=g;s/=g; s-=5*l; for(int i=0;i<l;i++) { digs[i]=5+min(4,s); s-=min(s,4); } int len=l; while(s) { digs[len++]=min(4,s); s-=min(s,4); } for(int i=len-1;i>=0;i--) printf("%d",digs[i]); puts(""); } } return 0; }
以上是关于Digit-Sum(HDU - 5710)的主要内容,如果未能解决你的问题,请参考以下文章
HDU4057 Rescue the Rabbit(AC自动机+状压DP)