C++-蓝桥杯-神奇的算式[2014真题][水题][爆搜]

四个不同数码凑一个乘法算式,结果恰好仍然只含这四个数码

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int ij[10],vis[10];
 4 bool check(int i,int j){
 5     int k=i*j,cnt=0;
 6     memset(ij,0,sizeof(ij));
 7     memset(vis,0,sizeof(vis));
 8     while(i)ij[i%10]=1,i/=10,cnt++;
 9     while(j)ij[j%10]=1,j/=10,cnt++;
10     if(cnt!=4)return false;
11     for(;k;k/=10){
12         if(!ij[k%10])return false;
13         if(!vis[k%10])vis[k%10]=1,cnt--;            
14     }
15     if(cnt)return false;
16     return true;
17 } 
18 int main(){
19     int ans=0;
20     for(int i=1;i<1e4;i++)
21         for(int j=i+1;j<1e4;j++)
22             if(check(i,j))ans++;//cout<<i<<"*"<<j<<"="<<i*j<<endl;
23     cout<<ans<<endl;
24     return 0;
25 }

猜你喜欢

转载自www.cnblogs.com/JasonCow/p/12416921.html