首页 > 代码库 > UVA725
UVA725
虽然是暴力求解,但是也要观察条件,尽量提高效率。如本题,原本要枚举10个数,但是分析可知通过枚举fghij就可以了。
#include<stdio.h> #include<string.h> //判断a,b中的所有数字都不等 int judge(int a,int b){ if(a>100000) return 0; int ans[15]; int count = 0; int i; memset(ans,0,sizeof(ans)); if(b<10000) ans[0]=1;//因为如果是四位数,要考虑第一个0 while(a){ ans[a%10]=1; a/=10; } while(b){ ans[b%10]=1; b/=10; } for(i=0;i<10;i++) count += ans[i]; if(count==10) return 1; else return 0; } int main(){ int n,fghij; int f=1; while(scanf("%d",&n) == 1){ if(n==0) return 0; for(fghij=1234;fghij<100000;fghij++){ if(judge(fghij*n,fghij)){ printf("%d / %05d = %d\n",fghij*n,fghij,n); f=0; } } if(f) printf("There are no solutions for %d\n",n); } return 0; }
UVA725
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。