HDU 5710 Digit-Sum

news/2025/1/13 10:57:26/
【题意】 我们要找出最小的正整数n满足——
a*S(n)==b*S(2n)

a,b的范围都在[1,100]

【分析&推导】

首先可以有这样的基础性结论:
设gcd(a,b)=g, 我们可以先使得b=b/g, a=a/g
S(n):S(2n)==b:a,那么我们有S(n):S(2n)=b:a。

然后,一个好的做法是,我们研究本质问题。
我们发现,如果一个digit是0~4,那么*2的效益是完全获得的。
如果一个digit的是5~9,那么*2后会损失9的收益。

这里解释一下为什么会损失9的收益

对于digit是5~9的,*2之后会变成两位,即10+x,而计算S(n)的时候,10只能被记为1,故损失了9
a*S(n) == b*S(2n),

我们假设有l的长度是[0,4]范围,有L的长度是[5,9]范围
那么显然满足:
S(2n)=S(n)*2-L*9
替换一下——
a*S(n) == b*(2S(n)-L*9)
a*S(n) == 2b*S(n) -L*9*b
(2b-a)*S(n) == L*9*b
即——
9*b:2b-a = S(n):L
也就是说,我们得到了S(n)与L的比例关系。
然后模拟一遍即可。

怎么模拟呢?
我们不妨假设答案n仅有长度为L,且每一位都是5
然后得到了把数位和sum分撒出去。

对于sum余下的数值,我们依次加到尾巴上。
如果sum最后把长度为L的字串都填充为'9'之后,还有剩余,那么在前面贪心填充。

【AC代码】

#include <stdio.h>
#include <iostream>
using namespace std;
int ans[10005];
int gcd(int a,int b){return b==0?a:gcd(b,a%b);
}
int main(){int t,a,b,m,n,k;scanf("%d",&t);while(t--){scanf("%d%d",&a,&b);n=9*b,m=2*b-a;if(m<0||5*m>n){puts("0");}else if(m==0){puts("1");}else{k=gcd(n,m);n/=k;m/=k;n-=5*m;for(int i=0; i<m; i++,n-=k){k=min(4,n);ans[i] = k+5;}while(n>4){ans[m++]=4;n-=4;}if(n)ans[m++]=n;
//            for(int i=0; i<m-1; i++){
//                printf("%d",ans[i]);
//            }
//            printf("%d\n",ans[m-1]);for(int i=m-1; i>=0; i--) printf("%d",ans[i]);puts("");}}return 0;
}



http://www.ppmy.cn/news/271225.html

相关文章

Python数据分析--可视化图表

绘制常用图表 折线图柱形图普通柱形图簇状柱形图堆积柱形图 条形图散点图气泡图面积图树地图雷达图箱形图饼图 折线图 plt.plot(x,y,color,linestyle,linewidth,marker,markeredecolor,markeregwidth,markerfacecolor,markersize,lable)x,y表示x轴和y轴的数据&#xff0c;为必…

python可视化图表

文章目录 制作折线图并且保存至桌面柱状图簇状条形图堆积柱形图堆积图制作堆积柱形图绘制条形图散点图绘制气泡图绘制面积图绘制树地图绘制雷达图绘制箱型图绘制饼图绘制环形图绘制水平线和垂直线直线绘制组合图表---折线图折线图折线图柱形图绘制双y轴图表绘制双y轴图表绘制双…

DELL服务器常用检查命令

内存 1、检查内存 /opt/dell/srvadmin/sbin/srvadmin-services.sh omreport chassis memory|grep -e "Status" -e "Connector Name" omreport chassis memory |grep Critical -A3 -B1 上面是检查内存状态 2、查看内存SN号 命令如下&#xff1a; 1、…

Python数据可视化之12种常用图表的绘制(一)——折线图/柱形图/条形图/散点图/气泡图/面积图

文章目录 折线图的绘制柱形图的绘制普通柱形图镞状柱形图层叠柱形图 条形图散点图气泡图面积图 折线图的绘制 废话不多说&#xff0c;直接撸代码~ import numpy as np import matplotlib.pyplot as plt plt.subplot(1,1,1)#建立一个坐标系 x np.array([1, 2, 3, 4, 5, 6, 7,…

华尔街分析师:斗鱼2023财年前景暗淡,但盈利能力有望提升

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 华尔街预计斗鱼2023财年收入前景悲观 根据S&P Capital IQ的一致性数据&#xff0c;华尔街卖方分析师预计&#xff0c;斗鱼&#xff08;DOYU&#xff09;的收入将从2022财年的71.93亿元下降到2023财年的67.53亿元&#x…

Oracle T5-2 服务器主板故障日志

1.2022-10-24 lease-1881日志&#xff0c;清除错误后才可加电&#xff1a; 58 Mon Oct 24 15:34:23 2022 Power Off major Power to /SYS has been turned off by: SP, Reason: Fault /SYS/MB 57 Mon Oct 24 15:34:23 2022 Fault Fault critical Fault detected at time Mon O…

expected 'document', but found Scalar in 'reader', line 51, column 1:

expected <document start>, but found Scalar in reader, line 51, column 1: - "localhost" ^ 启动storm时发生了问题,如下: Exception in thread "main" Exception java.lang.ExceptionInInitializerError at org.apache.storm.config$r…

Python数据可视化之12种常用图表的绘制(三)——四种组合图表的绘制(附代码和效果图)

文章目录 折线图折线图折线图柱形图绘制双y轴图表 通过前两篇博文我们已经学会了折线图/柱形图/条形图/散点图/气泡图/面积图的绘制 以及树地图&雷达图&箱型图&饼图&圆环图&热力图 可以看看这两篇博文 Python数据可视化之12种常用图表的绘制&#xff08;一…