UVA-725除法-Division
来源:互联网 发布:淘宝买东西怎么改价格 编辑:程序博客网 时间:2024/05/22 08:20
分析: 枚举0-9的所有排列?没这个必要,只需要枚举fghij就可以计算出abcde(=fghij * n),然后判断是否所有的数字都不相同即可。不仅程序简单,而且枚举量也从10!=3628800降低至不到1万,而且当abcde的位数不等于5的时候,就可以终止枚举了(记住n是大于等于2的哟!)
AC代码如下:用时为1573MS。
#include<cstdio>#include<cstring>#include<iostream>#include<cmath>using namespace std;//n>=2int vis[10],n,num;//每个数字是否被使用、要输入的数、除数的位数!//除数是用被除数和商得出的!int a[5],have;int getnum(int cnt)//获取当前a数组所存数列所代表的值!{ int sum=0,s=0; for(int i=cnt-1; i>=0; i--) sum+=(int)pow(10,s++)*a[i]; return sum;}bool judge(int s)//判断s是否符合要求!{ num=0; int vis1[10]; for(int i=0;i<10;i++) vis1[i]=vis[i];//把vis的状态赋给vis1,免得搜索时出错! while(s) { if(!vis1[s%10])//表示s%10这个数还没有出现过! vis1[s%10]=1; else return false; s/=10; num++; } if(num==5)//num只能等于5,可能等于其他数字! return true; return false;//因为num不等于5,表示不符合要求!}void fun(int cnt){ if(cnt>=5) { int chu=getnum(cnt)*n; if(judge(chu)) { have=true; cout<<chu<<" / "; for(int ii=0; ii<cnt; ii++) cout<<a[ii]; cout<<" = "<<n<<endl; } return ; } for(int i=0;i<10;i++) { if(!vis[i]) { vis[i]=1; a[cnt]=i; fun(cnt+1); vis[i]=0; } }}int main(){ int x=1; while(cin>>n,n) { have=false; memset(vis,0,sizeof(vis)); if(x>1)cout<<endl; x++; fun(0); if(!have) cout<<"There are no solutions for "<<n<<'.'<<endl; } return 0;}
0 0
- UVA-725除法-Division
- 除法(Division, UVa 725)
- 除法(Division,UVa 725)
- UVA 725 Division 除法
- Division, UVa 725 除法
- 除法(Division, UVa 725)
- UVa 725 DIVISION 除法
- 除法(division,UVa 725)
- 除法(Division,UVa 725)
- UVa 725 Division(除法)
- UVa 725 Division(除法)
- 除法(Division ,UVA 725)-ACM集训
- 例题7-1 UVA 725 Division除法
- 例题7-1 除法(Division, UVa 725)
- 除法(Division)
- 第7章 暴力求解法 例7-1 除法(Division, UVa 725)
- UVA 725 - Division
- UVA 725 - Division
- 虚拟机VirtualBox怎么添加新的虚拟硬盘
- MINI2440 从NAND FLASH启动时的代码复制理解心得
- (mac)Android Studio安装以及Fetching android sdk component information超时的解决方案
- OpenCV kmeans代码
- Ubuntu12.04 安装 图形界面 SVN客户端 Rabbitvcs
- UVA-725除法-Division
- FZU2109:Mountain Number(数位DP)
- iOS申请真机调试证书-图文详解
- 圆形DIV之用户头像
- 贺利氏推新型ITO替代材料
- UTF-8有BOM与无BOM
- supervisor使用教程
- Vi基本命令及操作(简单教程)
- JavaScript代码重构系列-重新组织你的函数