20701除法

来源:互联网 发布:怎么跟淘宝客服讲价 编辑:程序博客网 时间:2024/05/16 10:53

注意:本程序运行需要3~5分钟!


题目:


20701除法 难度级别:B; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B

试题描述
    输入正整数n,按从小到大的顺序输出所有满足表达式abcde/fghij=n的abcde和fghij,其中a~j恰好为数字0~9的一个排列。 如果没有符合题意的数,输出0。本题所说的五位数可以包括前导0的,如01234在这里也称为五位数。
输入
一个正整数n 
输出
若干行,每行包括两个符合要求的五位正整数(每行的两个数先大后小),两数之间用一个空格隔开。 
输入示例
62
输出示例
79546 01283
94736 01528
其他说明
数据范围 2≤n≤79;题目中的从小到大指的是输出数据每行的第一个数是从小到大的顺序。 



代码:

枚举法:

#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
//ifstream cin(".in");
//ofstream cout(".out");
int i1,i2,i3,i4,i5,i6,i7,i8,i9,i11;
int pan(int i,int j)
{
    i1=i%10;
    i2=i%100/10;
    i3=i%1000/100;
    i4=i%10000/1000;
    i5=i%100000/10000;
    
    i6=j%10;
    i7=j%100/10;
    i8=j%1000/100;
    i9=j%10000/1000;
    i11=j%100000/10000;
    
    if(i1==i2||i1==i3||i1==i4||i1==i5||i1==i6||i1==i7||i1==i8||i1==i9||i1==i11||i2==i3||i2==i4||i2==i5||i2==i6||i2==i7||i2==i8||i2==i9||i2==i11||3i==i4||i3==i5||i3==i6||i3==i7||i3==i8||i3==i9||i3==i11||i4==i5||i4==i6||i4==i7||i4==i8||i4==i9||i4==i11||i5==i6||i5==i7||i5==i8||i5==i9||i5==i11||i6==i7||i6==i8||i6==i9||i6==i11||i7==i8||i7==i9||i7==i11||i8==i9||i8==i11||i9==i11)
    {
       return 0;//no
    }
    return 1;//yes
}
int main()
{
    double i,j,n,t;
    double q;
    cin>>n;
    bool flag;
    flag=true;
    for(i=1000;i<=99999;i++)
    {
       for(j=i-1;j>1000;j--)
       {
          q=i/j;
          if(q==int(q)&&q==n)
          {
             t=pan(i,j);
             if(t==1)
             {
                cout<<i5<<i4<<i3<<i2<<i1<<" "<<i11<<i9<<i8<<i7<<i6<<endl;
                flag=false;
             }
          }
       }
    }
    if(flag==true)
    cout<<0<<endl;
    system ("pause");
    return 0;
}


0 0