using System;
using System.Collections.Generic;
using System.Text;
//用一个四位数A乘以一个个位数B等于一个四为位数C...要求每一位数不能重复.还有没有别的方法...赐教
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
           
            int a, b, c;
            for (int i = 1234; i < 9999; i++)
            {
              
                a =i;
                int a1 = (int)a / 1000;
                int a2 = (int)(a - a1*1000) / 100;
                int a3 = (int)(a - (a1*1000 + a2*100)) / 10;
                int a4 =(a-(a1*1000+a2*100+a3*10));
                
                if((a1 !=a2) & (a1!=a3) & (a1!= a4)&a2!=a3 & a2!=a4 &a3!=a4 & a<9999)
                {
                    for (int g=1;g<=9 ;g++ )
                    {
                        b = g;
                        c = a * b;
                        int c1 = (int)c / 1000;
                        int c2 = (int)(c - c1*1000) / 100;
                        int c3 = (int)(c - (c1*1000 + c2*100)) / 10;
                       int c4 = (c - (c1*1000 + c2*100 + c3*10));
                       if (b != a1 & b != a2 & b != a3 & b != a4 & b != c1 & b != c2 & b != c3 & b != c4 & c1 != c2 & c1 != c3 & c1 != c4 & c2 != c3 & c2 != c4 & c3 != c4 & c < 9999 & a1 != c1 & a1 != c2 & a1 != c3 & a1 != c4 & a2 != c1 & a2 != c2 & a2 != c3 & a2 != c4 & a3 != c1 & a3 != c2 & a3 != c3 & a3 != c4 & a4 != c1 & a4 != c2 & a4 != c3 & a4 != c4 & a2 != 0 & a3 != 0 & a4 != 0 & c2 != 0 & c3 != 0 & c4 != 0)
      //这一块让人看的晕.有没有更简单的办法啊..
                        {
                            
                            Console.WriteLine("{2}={0}*{1}",a,b,c);
                        }
                       
                                            }
                }
            }        }
    }
}

解决方案 »

  1.   


    static void Main(string[] args)
    {
        int a, b;
        //b最小是2
        for(b=2;b<=9;b++)
        {
            // a最小是1234  最大是9999/b
            for(a=1234;a<=9999/b;a++)
            {
                if(a*b<=9999)
                {//这里用linq有点丑 杀鸡用牛刀, 但是代码简单
                    var group = from ch in (a.tostring()+b.tostring()+(a*b).tostring()) group ch by ch;
                    if(group.count=9)
                       Console.WriteLine("{2}={0}*{1}",a,b,a*b); 
                }
            }
        }
    }
      

  2.   

    group.count=9  可以给它赋值吗..if 语句不是要bool类型吗..不明白..
      

  3.   

    group.count==9   明显的笔误唉