最少砝码(思维+找规律)
创始人
2025-06-01 19:42:25

最少砝码

在这里插入图片描述
在这里插入图片描述
前n个可以表示0~k;
第n+1个为x(x>k);
最大可测maxn=k+x;
第n+1个和前n个放两边 可测得x-k;
x-k=k+1,得到x=2k+1
maxn=3k+1;

k+1 可以用(2k+1) - (k-0) 表示
k+2 可以用(2k+1) - (k-1) 表示

2k+1 可以用(2k+1) - (0) 表示
2k+2 可以用(2k+1) + (1) 表示

3k+1 可以用(2k+1) + (k) 表示

这样n+1个砝码可以表示出0~3k+1
然后可以根据这个max[i+1] = 3*max[i]+1
然后运用数学知识转化为一个公式即可

a[i]表示用i个砝码 能够构成的 最大可测量重量(此时的范围自然也对应着0~a[i])
a[0]=0a[0]=0a[0]=0
a[1]=2∗0+1=1,该次新增砝码重量为2∗0+1=1a[1]=2*0+1=1,该次新增砝码重量为 2*0+1=1a[1]=2∗0+1=1,该次新增砝码重量为2∗0+1=1
a[2]=3∗1+1=4,该次新增砝码重量为2∗1+1=3a[2]=3*1+1=4 ,该次新增砝码重量为 2*1+1=3a[2]=3∗1+1=4,该次新增砝码重量为2∗1+1=3
a[3]=3∗4+1=13,该次新增砝码重量为2∗4+1=9a[3]=3*4+1=13 ,该次新增砝码重量为 2*4+1=9a[3]=3∗4+1=13,该次新增砝码重量为2∗4+1=9
甚至可以把规律整理为公式(等比数列的和a1(1−qn)/(1−q)a1(1-q^n)/(1-q)a1(1−qn)/(1−q),q=3 , a1=1) a[i]=(3i−1)/2>=K==>i=log3(2∗K+1)a[i]=(3^i-1)/2>=K ==> i=log_3(2*K+1)a[i]=(3i−1)/2>=K==>i=log3​(2∗K+1)

res=log(2*K+1)/log(3)
#include
using namespace std;
#define int long long 
int K;
signed main(){cin>>K;int res=0;int sum=0;while(true){res++;//加一个砝码sum=sum*3+1;//能称出的 最多数量if(sum>=K){cout<

相关内容

热门资讯

淮阳段家焦鱼汤春节前最后一碗,... 2月15日早上,农历腊月廿八,春节假期前的最后一个营业日。清晨六点,天色未明,淮阳古城的老街却已早早...
原创 警... 一到春节,家家户户茶几上都摆满了炒瓜子、牛肉干、话梅、薯片,看着是年味十足,实则藏着看不见的健康陷阱...
别等年后再说! 俗话说“每逢佳节胖三斤” 春节临近,聚餐增多 腰间的“游泳圈”是不是 已经开始提前囤货了? 春节期间...
蘸着葡萄牙暖阳的酸菜饺子 文 | 符曦文 既有东北黑土地的醇厚,也沐浴着葡萄牙阳光的温暖,一盘滚烫的酸菜馅饺子,既是指引我归途...
正宗遂川猪脚怎么做?客家老味,... 遂川猪脚是江西吉安遂川的招牌硬菜,也是客家宴席上的压轴大菜。它讲究整蹄卤制、文火慢炖、酱香浓郁、鲜辣...