一道简单的C++编程题,题目描述在下面呢,请求各位帮帮我!
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/17 17:13:31
一道简单的C++编程题,题目描述在下面呢,请求各位帮帮我!
用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。 要求编程实现:对用户给定的重量,给出砝码组合方案。(用-数表示砝码和称重物放在同一个盘子里)
输入样例:
5
19
输出样例:
9 -3 -1
27 -9 1
用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。 要求编程实现:对用户给定的重量,给出砝码组合方案。(用-数表示砝码和称重物放在同一个盘子里)
输入样例:
5
19
输出样例:
9 -3 -1
27 -9 1
![一道简单的C++编程题,题目描述在下面呢,请求各位帮帮我!](/uploads/image/z/16468715-11-5.jpg?t=%E4%B8%80%E9%81%93%E7%AE%80%E5%8D%95%E7%9A%84C%2B%2B%E7%BC%96%E7%A8%8B%E9%A2%98%EF%BC%8C%E9%A2%98%E7%9B%AE%E6%8F%8F%E8%BF%B0%E5%9C%A8%E4%B8%8B%E9%9D%A2%E5%91%A2%EF%BC%8C%E8%AF%B7%E6%B1%82%E5%90%84%E4%BD%8D%E5%B8%AE%E5%B8%AE%E6%88%91%EF%BC%81)
#include <stdio.h>
int main()
{
int a[5]={0},b[5]={1,3,9,27,81},i,n;
scanf("%d",&n);
i=0;
while(n>0)
{
a[i]=n%3;
n=n/3;
i++;
}
for(i=0;i<4;i++)
switch(a[i])
{
case 2:a[i]=-1;a[i+1]++;break;
case 3:a[i]=0;a[i+1]++;
}
for(i = 4; i>=0; i--)
if(a[i])
printf("%d ", a[i]*b[i]);
printf("\n");
return 0;
}
int main()
{
int a[5]={0},b[5]={1,3,9,27,81},i,n;
scanf("%d",&n);
i=0;
while(n>0)
{
a[i]=n%3;
n=n/3;
i++;
}
for(i=0;i<4;i++)
switch(a[i])
{
case 2:a[i]=-1;a[i+1]++;break;
case 3:a[i]=0;a[i+1]++;
}
for(i = 4; i>=0; i--)
if(a[i])
printf("%d ", a[i]*b[i]);
printf("\n");
return 0;
}