abcde/fghij问题

输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的换一个排列,2<=n<=79

样例输入:

62

样例输出:

79546/01283=62

94736/01528=62

#include <iostream>
using namespace std;
int main()
{
    int n;
    while(1)
    {
        cout<<"input n: ";
        cin>>n;
        if(n>=2&&n<=79)
        {
            break;
        }
    }
    int a,b,c,d,e,f,g,h,i,j;
    for(a=0;a<=9;a++)
    {
        for(b=0;b<=9;b++)
        {
            for(c=0;c<=9;c++)
            {
                for(d=0;d<=9;d++)
                {
                    for(e=0;e<=9;e++)
                    {
                        for(f=0;f<=9;f++)
                        {
                            for(g=0;g<=9;g++)
                            {
                                for(h=0;h<=9;h++)
                                {
                                    for(i=0;i<=9;i++)
                                    {
                                        for(j=1;j<=9;j++)
                                        {
                                            long x,y;
                                            x=(((a*10+b)*10+c)*10+d)*10+e;
                                            y=(((f*10+g)*10+h)*10+i)*10+j;
                                            if(x%y==0&&x/y==n)
                                            {
                                                int p[10]={0,1,2,3,4,5,6,7,8,9};
                                                p[a]=-1;
                                                p[b]=-1;
                                                p[c]=-1;
                                                p[d]=-1;
                                                p[e]=-1;
                                                p[f]=-1;
                                                p[g]=-1;
                                                p[h]=-1;
                                                p[i]=-1;
                                                p[j]=-1;
                                                int m;
                                                for(m=0;m<=9;m++)
                                                {
                                                    if(p[m]!=-1)
                                                    {
                                                        break;
                                                    }
                                                
                                                }
                                                if(m==10)
                                                {
                                                    cout<<a<<b<<c<<d<<e<<"/"<<f<<g<<h<<i<<j<<"="<<n<<endl;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
 } 

 

上一篇:短网址生成


下一篇:面试题62. 圆圈中最后剩下的数字