日期:2014-05-18  浏览次数:20883 次

C# int类型
1、 找出111111111 – 999999999中符合以下条件的9位数,9位数的中间三位是前三位的2倍,最后三位是前三位的3倍,并且这9个数的每位只能是1-9,不能重复




我的思路是设int a=111;然后用循环加,没循环一次,就判断,如果a里面的数据包含1-9中任意3个数字并且不重复的话就求int b,在用if判断int b,以此再求int c;但如何判断变量的值中包含1-9并且数字不重复呢??????????
  

例如: int a=111;
  int b=0;
  int c=0;
  for (a = 111; a < 999;a++ ) 
  {
   
  b = a * 2;
  if (b >= 111 && b <= 999)
  {
  c = a * 3;
  if(c >=111 && c<=999)
  {
  Console.WriteLine(a.ToString()+b.ToString()+c.ToString());
  }
  }
   
  }

------解决方案--------------------
C# code

        static void Main(string[] args)
        {
            int a = 111;
            int b = 0;
            int c = 0;
            for (a = 112; a < 999; a++)
            {
                b = a * 2;
                c = a * 3;
                if(CheckNumber(a) && CheckNumber(b) && CheckNumber(c))
                    Console.WriteLine("{0}{1}{2}", a, b, c);
            }
            Console.Read();
        }

        private static bool CheckNumber(int number)
        {
            if (number.ToString().IndexOf("0") >= 0)
                return false;
            int bai = number / 100;
            int shi = number / 10 % 10;
            int ge = number % 10;
            if(bai == shi && shi == ge)
                return false;

            if (number >= 999)
                return false;

            return true;
        }