其他分享
首页 > 其他分享> > 除法(非常非常非常简单的暴搜TAT)

除法(非常非常非常简单的暴搜TAT)

作者:互联网

输入整数n,按从小到大的顺序输出所有形如abdce/fghij = n的表达式
其中aj恰好是09的一个 排列(可以有前导0)

石路:
暴搜也别太暴力,可以大概想想边界什么的,可以略微优化一下,或者。。。。
反正认真分析一下可能有惊喜!

#include <iostream>
#include<algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;

#define MAXSIZE 150
/** 除法 **/
int judge(int a,int b){//判重函数
    int num[10];
    memset(num,0,sizeof(num));
    while(a){
        num[a%10]+=1;
        a/=10;
    }
     while(b){
        num[b%10]+=1;
        b/=10;
    }
    for(int i=1;i<10;i++){
        if(num[i]==0 || num[i]>1) return 0;
    }
    return 1;
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i = 1234;i<98765;i++){
        if(n*i > 98765)
            continue;
        if(judge(i,n*i))
            printf("%d / %05d = %d\n",n*i,i,n);
    }
    return 0;
}

标签:TAT,10,非常简单,return,int,include,while,num,除法
来源: https://blog.csdn.net/weixin_43201459/article/details/88703784