zoukankan      html  css  js  c++  java
  • Division

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/B

    题意:

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

          注意:每个案例之间用空格隔开,且0后不需要,注意输出数据的格式。

          案例:

          input

          61

          62

          0

          output

          There are no solutions for 61.

          

          79546 / 01283 = 62

          94736 / 01528 = 6

    思路分析:

          被除数一定是5位数,找出所有满足所有数字各不相同的数,存入数组,并将它们各个位置上的数存入数组。

          再通过枚举找出所有满足条件的数输出等式或无解。

    源代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int b[100000][6];
     5 int main()
     6 {
     7     int N,i,j,k,n=0,s=0,a[5],t=0;
     8     cin>>N;
     9     for(i=12345;i<=98765;i++)     //找出满足基本条件的所有可能的被除数
    10     {
    11         a[0]=i%10;
    12         a[1]=i/10%10;
    13         a[2]=i/100%10;
    14         a[3]=i/1000%10;
    15         a[4]=i/10000;
    16         for(j=0;j<4;j++)
    17         {
    18             for(k=j+1;k<5;k++)
    19                 if(a[j]==a[k])
    20                     break;
    21             if(k<5)
    22                 break;
    23         }
    24         if(j>=4)
    25         {
    26             b[s][5]=i;
    27             b[s][0]=i%10;
    28             b[s][1]=i/10%10;
    29             b[s][2]=i/100%10;
    30             b[s][3]=i/1000%10;
    31             b[s][4]=i/10000;
    32             s++;
    33         }
    34     }
    35     while(N)
    36     {
    37         if(t++)
    38             cout<<endl;
    39         n=0;
    40         for(i=0;i<s;i++)
    41             if(b[i][5]%N==0)               //找出满足条件的除数
    42             {
    43                 a[0]=b[i][5]/N%10;
    44                 a[1]=b[i][5]/N/10%10;
    45                 a[2]=b[i][5]/N/100%10;
    46                 a[3]=b[i][5]/N/1000%10;
    47                 a[4]=b[i][5]/N/10000;
    48                 for(j=0;j<4;j++)
    49                 {
    50                     for(k=j+1;k<5;k++)
    51                         if(a[j]==a[k])
    52                             break;
    53                     if(k<5)
    54                         break;
    55                 }
    56                 if(j>=4)
    57                 {
    58                     for(j=0;j<5;j++)
    59                     {
    60                         for(k=0;k<5;k++)
    61                             if(a[j]==b[i][k])
    62                                 break;
    63                         if(k<5)
    64                             break;
    65                     }
    66                     if(j>=5)
    67                     {   
    68                         n++;
    69                         printf("%d / %05d = %d
    ",b[i][5],b[i][5]/N,N);
    70                     }
    71                 }
    72 
    73             }
    74         if(n==0)        //判断是否有解
    75             printf("There are no solutions for %d.
    ",N);
    76         cin>>N;
    77     }
    78     return 0;
  • 相关阅读:
    第一次上传文件到linux服务器
    @JsonFormat与@DateTimeFormat的区别
    Tomcat端口被占用处理
    简单的Tomcat部署
    PHP源码加密,zend guard与ioncube
    PHP计算年龄
    My97DatePicker时间控件 JQuery UI
    php二维数组自定义排序
    CodeSmith Generator 7.0.2激活步骤
    SQL Server Management Studio 2008版本的安装
  • 原文地址:https://www.cnblogs.com/q-c-y/p/4680297.html
Copyright © 2011-2022 走看看