uva 725 Division 简单枚举

来源:互联网 发布:早期电脑网络打枪游戏 编辑:程序博客网 时间:2024/05/20 13:06

点击打开链接

//求满足abcde/fghij=N的个数 a~j为0~9的一个排列 
//枚举abcde算出fghij 在判断所有数字是否不同即可 

#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;typedef long long ll;const int N=1e2+20;//求满足abcde/fghij=N的个数 a~j为0~9的一个排列 //枚举abcde算出fghij 在判断所有数字是否不同即可 int n,cnt;bool check(ll a,ll b){int used[N],vis[N];memset(used,0,sizeof(used));memset(vis,0,sizeof(vis));int num=0;int f=a,s=b;if(f<1e4)//used[0]=1;while(a){int r=a%10;if(used[r])return false;used[r]=1;a/=10;}while(b){int r=b%10;if(used[r]||vis[r])return false;vis[r]=1;b/=10; }for(int i=0;i<10;i++){if(used[i]||vis[i])num++;}return num==10;} int main(){ int t=0;while(cin>>n&&n){if(t++)printf("\n");bool flag=false;for(int i=1234;i<100000;i++){if(check(i,i*n)){//%05d不足5位,最左添加0 printf("%05d / %05d = %d\n",i*n,i,n);flag=true; }}if(!flag)printf("There are no solutions for %d.\n",n);}return 0;} 


0 0