using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hw2
{
class Program
{
static bool HasSolution(int a,int b,int c)
{
int GCD;
//演算步驟一 計算 a, b 的最大公因數
int aCopy = a;
int bCopy = b;
int temp;
if (a > b)
{
while (aCopy % bCopy != 0)
{
temp = aCopy % bCopy;
aCopy = bCopy;
bCopy = temp;
}
GCD = bCopy;
}
else
{
while (bCopy % aCopy != 0)
{
temp = bCopy % aCopy;
bCopy = aCopy;
aCopy = temp;
}
GCD = aCopy;
}
//演算步驟二 設(a, b) = k, 若 c 不為 k 的倍數, 則無解。
if (c % GCD != 0)
{
return false;
}
else
return true;
}
static void Main(string[] args)
{
bool flag=true;
int temp;
while (flag)
{
Console.WriteLine("第一桶容量=");
int containerA = int.Parse(Console.ReadLine());
Console.WriteLine("第二桶容量=");
int containerB = int.Parse(Console.ReadLine());
Console.WriteLine("所需水量=");
int waterRequired = int.Parse(Console.ReadLine());
Console.WriteLine("A桶水為較小桶水,B桶為較大桶水");
if (containerA > containerB)
{
temp = containerB;
containerB = containerA;
containerA = temp;
Console.WriteLine("A桶容量{0}公升,B桶容量{1}公升", containerA, containerB);
}
else
{
Console.WriteLine("A桶容量{0}公升,B桶容量{1}公升", containerA, containerB);
}
if (HasSolution(containerA, containerB, waterRequired) == true)
{
int currentCapacityA = 0;
int currentCapacityB = 0;
int step = 0;
Console.WriteLine("一開始,A桶有水{0}公升,B桶有水{1}公升\n", currentCapacityA, currentCapacityB);
while (currentCapacityA + currentCapacityB != waterRequired)
{
step++;
if (containerA + containerB < waterRequired)
{
Console.WriteLine("被唬了");
break;
}
if (containerA + containerB == waterRequired)
{
currentCapacityA =containerA;
currentCapacityB = containerB;
Console.WriteLine("step{0}:兩桶皆滿水\n此時,A桶有水{1}公升,B桶有水{2}公升\n", step, currentCapacityA, currentCapacityB);
}
else if (currentCapacityB == 0)
{
currentCapacityB = containerB;
Console.WriteLine("step{0}:把B桶裝滿水\n此時,A桶有水{1}公升,B桶有水{2}公升\n", step, currentCapacityA, currentCapacityB);
}
else if (currentCapacityA >= containerA)
{
currentCapacityA = 0;
Console.WriteLine("step{0}:A桶水滿,把A桶的水全部倒掉\n此時,A桶有水{1}公升,B桶有水{2}公升\n", step, currentCapacityA, currentCapacityB);
}
else if (currentCapacityA + currentCapacityB >= containerA)
{
currentCapacityB = currentCapacityA + currentCapacityB - containerA;
currentCapacityA = containerA;
Console.WriteLine("step{0}:將B桶的水倒滿A桶\n此時,A桶有水{1}公升,B桶有水{2}公升\n", step, currentCapacityA, currentCapacityB);
}
else if (currentCapacityA + currentCapacityB != waterRequired)
{
currentCapacityA = currentCapacityA + currentCapacityB;
currentCapacityB = 0;
Console.WriteLine("step{0}:將B桶的水倒滿A桶\n此時,A桶有水{1}公升,B桶有水{2}公升\n", step, currentCapacityA, currentCapacityB);
}
}
if (containerA + containerB >= waterRequired)
{
Console.WriteLine("最後,A桶有水{0}公升,B桶有水{1}公升\n", currentCapacityA, currentCapacityB);
Console.WriteLine("將水{0}公升放在啟動開關上,解除炸彈", currentCapacityA + currentCapacityB);
}
Console.ReadLine();
Console.Clear();
while (true)
{
Console.WriteLine("還有其他犯人嗎?沒有請按0,有按1");
int response = int.Parse(Console.ReadLine());
if (response == 0)
{
flag = false;
break;
}
else if (response == 1)
{
flag = true;
break;
}
else
Console.Clear();
}
}
else
{
Console.WriteLine("解除炸彈是幌子,蹦!!!!!!!!!!!");
break;
}
}
Console.Read();
}
}
}
2015年4月8日 星期三
[2015][Homework]Team02 - Hw04
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言