【原】一道数学题的求解
题目:
将1到9这九个数字分成三个数字不重复(即每个数字只出现一次)的3位数a,b,c,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。求出最小的那个数。
解答:
class Program
{
/// <summary>
/// 将1到9这九个数字分成三个数字不重复(即每个数字只出现一次)的3位数a,b,c,
/// 要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
for (int t = 100; t < 334; t++)
{
int i = t;
int j = t * 2;
int k = t * 3;
if ((j < 1000) && (j > 99) && (k < 1000) && (k > 99))
{
StringBuilder sb = new StringBuilder();
sb.Append(i.ToString());
sb.Append(j.ToString());
sb.Append(k.ToString());
CheckNum(sb.ToString());
}
}
Console.ReadLine();
}
private static void CheckNum(string value)
{
for (int i = 0; i < value.Length; i++)
{
if (value[i] != 0)
{
int firstPosition = value.IndexOf(value[i]);
int lastPosition = value.LastIndexOf(value[i]);
if (firstPosition == lastPosition)
{
if (i == value.Length - 1)
{
Console.WriteLine("满足条件的值为:{0}", value.Substring(0, 3));
}
}
else
{
break;
}
}
}
}
}
{
/// <summary>
/// 将1到9这九个数字分成三个数字不重复(即每个数字只出现一次)的3位数a,b,c,
/// 要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
for (int t = 100; t < 334; t++)
{
int i = t;
int j = t * 2;
int k = t * 3;
if ((j < 1000) && (j > 99) && (k < 1000) && (k > 99))
{
StringBuilder sb = new StringBuilder();
sb.Append(i.ToString());
sb.Append(j.ToString());
sb.Append(k.ToString());
CheckNum(sb.ToString());
}
}
Console.ReadLine();
}
private static void CheckNum(string value)
{
for (int i = 0; i < value.Length; i++)
{
if (value[i] != 0)
{
int firstPosition = value.IndexOf(value[i]);
int lastPosition = value.LastIndexOf(value[i]);
if (firstPosition == lastPosition)
{
if (i == value.Length - 1)
{
Console.WriteLine("满足条件的值为:{0}", value.Substring(0, 3));
}
}
else
{
break;
}
}
}
}
}