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)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 5710 Digit-Sum (构造)

HDU 5710 digit sum

HDU4057 Rescue the Rabbit(AC自动机+状压DP)

HDU3247 Resource Archiver(AC自动机+BFS+DP)

P5710 数的性质

S5700&S5710 产品文档 : 配置