最少砝码(思维+找规律)
创始人
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<

相关内容

热门资讯

隆化县都有哪些美食 隆化的美食版图,始终围绕着这片土地馈赠的谷物展开,尤以小米为核心的传统风味最为地道。从宫廷贡品演变而...
生活日常时间紧,预制一锅出美食... 平常日子里柴米油盐的生活当中,美食是最为安稳的慰藉之物。它并非仅仅只是满足填饱肚子的那种需求,更是同...
生活日常美食攻略:轻松搞定营养... 日常里的美食,并非只是为了填饱肚子,更是一种能连接情感、抚慰心灵的简易方式,它隐匿于清晨匆匆忙忙的早...
生活日常:巧用妙招,快速做出美... 对不少人来讲,日常生活之中的满足之感,在很大程度上是源于一顿又一顿的饭菜。美味食物不单单是用来填满肚...
苹果养生搭配 | 3种家常苹果... 大家好!你是否也听过那句老话:“一天一苹果,医生远离我”?苹果是我们生活中最常见的水果,然而你知道吗...