天平称物体

问题:给你一个天平,N个砝码(N=32).第i个砝码的质量是3^ (i-1)。 给你一个32位内的整数质量的物体,请问能否把质量为M的物体以及若干个砝码放在天平两边,达到平衡,如果可以的话,请指出选择的砝码。 解法描述:把M表示成三进制表达式,然后调整系数,使其系数是(-1,0,1)。-1表示放在与M同侧,0表示不放,1表示放在与M异侧。 程序如下: #include using namespace std; void to3mod(char* array, int m){ int i = 0; while(m >= 3){ array[i++] = m % 3; m = m / 3; } array[i] = m; } void change(char* array){ for(int i=0; i<32; i++){ if(array[i] == 2){ array[i] = -1; array[i+1] ++; }else if(array[i] == 3){ array[i] == 0; array[i+1] ++; } } } void print(char* array){ for(int i=0; i<32; i++){ cout << array[i]+0 << " ,"; } cout << endl; } int main() { char array[32]; memset(array, 0, 32); print(array); to3mod(array, 15); print(array); change(array); print(array); return 0; }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值