zoukankan      html  css  js  c++  java
  • 牛客寒假算法基础集训营2 C处女座的砝码-梅氏砝码问题

    链接:https://ac.nowcoder.com/acm/contest/327/C
    来源:牛客网

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 262144K,其他语言524288K
    64bit IO Format: %lld
    题目描述
    处女座热爱做物理实验,为了实验,处女座必须要精确的知道物品的质量。处女座准备自己设计一套砝码,每一个砝码都是正整数,这套砝码必须能够精确测量出n以内所有正整数的质量,处女座想要知道至少需要多少个砝码。你可以在天平的任意一边放置砝码。

    输入描述:
    一行,一个正整数n

    1<=n<=101000
    输出描述:
    一个整数,表示最少的砝码数。

    示例1
    输入
    20

    输出
    4

    说明
    你可以选择1,2,6,11
    1=1
    2=2
    3=1+2
    4=6-2
    5=6-1
    6=6
    7=6+1
    8=6+2
    9=6+2+1
    10=11-1
    11=11
    12=11+1
    13=11+2
    14=11+2+1
    15=11+6-2
    16=11+6-1
    17=11+6
    18=11+6+1
    19=11+6+2
    20=11+6+2+1
    *用四个砝码称出1 - 40的重量,这四个砝码的值为多少?
    若有n个砝码,重量分别为M1,M2,……,Mn,且能称出从1到(M1+M2+……+Mn)的所有重量,则再加一个砝码,重量为=(M1+M2+……+Mn)2+1,则这n+1个砝码能称出从1到(M1+M2+……+Mn+1)的所有重量。
    解决思路 :
    1克的法码是无论如何要用的;
    其次需要准备的法码设为x克,就可以称x+1克和x-1克。由于x-1克是在1克的基础上继续加1克的重量所以 x-1=1+1 ,即 x=3 。根据上式可以称出 1、2=3-1、3、4=3+1克。
    把要准备的第三个法码社为y克,由于第二个法码可以称到4克,所以又可以称y-4、y-3、y-2、y-1、y、y+1、y+2、y+3、y+4克的重量。由于y-4是在4克的基础上继续加1克的重量,所以 y-4=4+1。即 y=9。因此可以称出1、2=3-1、3、4=3+1、5=9-(1+3)、6=9-3、7=9+1-3、8=9-1、9、10=1+9、11=3+9- 1、12=3+9、13=1+3+9 。
    再把要准备的第四个法码设为z克,可以称从z-13到z+13。和前面一样、z-13=13+1 ,所以 z=27。因此可以称出到40克的重量了。
    也就是说、只要分别准备1、3、9(=3的平方)、27(=3的立方)克4种法码,就可以称出从1克到40克、每一次加1克的重量。

    结论:若要称1到n,则需要的最少的砝码个数:
    (3^m-1)/2>=n(等比数列求和)
    即log3(2*n+1)向上取整

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <queue>
    #include <cmath>
    #define LL long long
    using namespace std;
    int main()
    {
       long double n;
       cin>>n;
       cout<<ceil(log(2*n+1)/log(3))<<endl;
    
       return 0;
    }
    
  • 相关阅读:
    二分法、面向过程、匿名函数、模块
    寒假总结
    软件需求开发最佳实践(于向东)阅读笔记03
    微信小程序“真心话”冲刺阶段03
    软件需求开发最佳实践(于向东)阅读笔记02
    微信小程序“真心话”冲刺阶段02
    微信小程序“真心话”冲刺阶段01
    寒假作业----微信小程序“真心话”-------给父母写的软件
    软件需求开发最佳实践(于向东)阅读笔记01
    软件工程概论总结及其对建民欧巴的评价和建议
  • 原文地址:https://www.cnblogs.com/qinjames/p/10554695.html
Copyright © 2011-2022 走看看