十进制数转为二进制数

有三个无刻度瓶,大瓶A容量大于中瓶和小瓶的容量,。设有液体体积为 x+y;x和y为奇数。中瓶B的容积为x,小瓶C的容量为 y;试用这三个瓶。使大瓶和中瓶里各盛液体(x+y)/2;

 

 

下面给出中文表述的算法:
大瓶倒中瓶,中瓶倒小瓶,小瓶倒大瓶。
中瓶不空不倒入。
小瓶不满不倒出。

 

中瓶不空不倒入保证了大瓶倒入中瓶液体为0或者为中瓶体积。小瓶不满不倒出保证了小瓶倒入大瓶液体量或为0或为小瓶体积。倒液顺序保证了不产生列循环。

#include<iostream.h>
#include<stdio.h>
#define X 47
#define Y 35
void main(){
 int a=(X+Y);
 int b=0;
 int c=0;
 do
 {
  if(b==0)
  {b=X;a=a-X;cout<<a<<" "<<b<<" "<<c<<endl;}
   if(b+c>=Y)
  {b=b+c-Y;c=Y;
  cout<<a<<" "<<b<<" "<<c<<endl;}
  else
  {c=c+b;b=0;
  cout<<a<<" "<<b<<" "<<c<<endl;}
  if(c==Y)
  {c=0;a=a+Y;cout<<a<<" "<<b<<" "<<c<<endl;}
 }while((a!=(X+Y)/2)&&(b!=(X+Y)/2));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值