五个砝码

【5个砝码】

      用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。

      如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。

      本题目要求编程实现:对用户给定的重量,给出砝码组合方案。

例如:

      用户输入:

      5

      程序输出:

      9-3-1

      用户输入:

      19

扫描二维码关注公众号,回复: 5956927 查看本文章

      程序输出:

       27-9+1

      要求程序输出的组合总是大数在前小数在后。

      可以假设用户的输入的数字符合范围1~121。

三进制

#include<iostream>
#include<cmath>
using namespace std;
int x=0,k=1;
int a[10],b[10];
void d(int n){//对应的三进制数
	if(n){	
		d(n/3);
		a[k++]=n%3;
	}
	return ;
} 
int main(){
	int n;
	cin>>n;
	d(n);
	for(int i=k-1;i>=1;i--){//三进制的每位无非是0 1 2  0直接跳过  1 输出3^i  2由于没有这个砝码就将高位加一  输出-3^i;
		if(a[i]==2) {
			a[i]=-1;
			a[i-1]+=1;
		}	
	}
	
	int m=0;
    while(a[m]==0) m++;
	if(a[m]==1) cout<<pow(3,k-1);
	for(int i=m+1;i<k;i++){
		if(a[i]==1) cout<<"+";
		else if(a[i]==-1) cout<<"-"; 
		if(a[i]!=0)
		cout<<pow(3,k-i-1);
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_41722217/article/details/88758916