四个不同数码凑一个乘法算式,结果恰好仍然只含这四个数码
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 }