7-1 除法(Division)

暴力求解法

题目大概是:给出n,输出所有满足abcde/fghij=n的等式。

直接循环枚举所有可能情况,然后判断有没有重复的数字,如果没有,输出。

由于忘记判断abcde是否有重复被卡了一次~~

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
int wow,ans;
int k[10]={0,1,2,3,4,5,6,7,8,9};
int a,b,c,d,e,a2,b2,c2,d2,e2; 
bool l[10];
bool bj(){
    if(a==b||a==c||a==d||a==e||b==c||b==d||b==e||c==d||c==e||d==e) return 0;
    if(a2==b2||a2==c2||a2==d2||a2==e2||b2==c2||b2==d2||b2==e2||c2==d2||c2==e2||d2==e2) return 0;
    l[a]=1;
    l[b]=1;
    l[c]=1;
    l[d]=1;
    l[e]=1;
    if(l[a2]==0 && l[b2]==0 && l[c2]==0 && l[d2]==0 && l[e2]==0 ){
        memset(l,0,sizeof(l));
        return 1;
    }
    else{
        memset(l,0,sizeof(l));
        return 0;
    }   
}
int main(){
    cin>>n;
    for(a=0;a<10;a++)
        for(b=0;b<10;b++)
            for(c=0;c<10;c++)
                for(d=0;d<10;d++)
                    for(e=0;e<10;e++){
                        wow=a*10000+b*1000+c*100+d*10+e;
                        if(wow%n==0){
                            wow=wow/n;
                            a2=wow/10000%10;
                            b2=wow/1000%10;
                            c2=wow/100%10;
                            d2=wow/10%10;
                            e2=wow/1%10;
                            if(bj()==1) {
                                ans++;
                                cout<<a<<b<<c<<d<<e<<"/"<<a2<<b2<<c2<<d2<<e2<<"="<<n<<endl;
                            }
                        }
                    }
    cout<<ans<<endl;
}

猜你喜欢

转载自blog.csdn.net/floatiy/article/details/78801666
7-1