UVA.725 Division (暴力)
来源:互联网 发布:java简单五子棋源代码 编辑:程序博客网 时间:2024/05/18 07:01
UVA.725 Division (暴力)
题意分析
找出abcdefghij分别是0-9(不得有重复),使得式子abcde/fghij = n。
如果分别枚举每个数字,就会有10^10,肯定爆炸,由于分数值已知,其实发现可以通过枚举分母,来计算出分子,然后再看看这些数字是否符合题意即可。
在枚举分母的时候,也可以根据条件过滤掉很多数字,我这里没有优化,直接暴力扫描1234-99999。
#include <iostream>#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <sstream>#include <set>#include <map>#include <queue>#include <stack>#include <cmath>#define nmax 200#define MEM(x) memset(x,0,sizeof(x))using namespace std;int digit[10];int n;int getdigit(int num){ int cnt = 0; while(num){ cnt++; num/=10; } return cnt;}bool caldigit(int num){ if(getdigit(num)<=4) digit[0]++; else if(getdigit(num) >=6) return false; while(num){ int t = num%10; digit[t] ++; num/=10; } for(int i = 0; i<=9; ++i){ if(digit[i] == 0) return false; else if(digit[i] == 2) return false; } return true;}bool caldigiti(int num){ memset(digit,0,sizeof(digit)); if(getdigit(num)<=4) digit[0]++; else if(getdigit(num) >=6) return false; while(num){ int t = num%10; digit[t] ++; num/=10; } int cnt = 0; for(int i = 0; i<=9;++i){ if(digit[i] == 2) return false; else if(digit[i] == 1) cnt++; } if(cnt == 5) return true; else return false;}void output(int a, int b){ int len1 = getdigit(a),len2 = getdigit(b); for(int i = 5-len1; i>0 ; --i) printf("0"); printf("%d / ",a); for(int i = 5-len2;i>0 ;--i) printf("0"); printf("%d = %d\n",b,n);}int main(){ //freopen("in.txt","r",stdin); bool isfirst = true; while(scanf("%d",&n) && n){ if(!isfirst) printf("\n"); int sta = 1234;bool isok = false; for(int i = sta;i<=99999;++i){ if(caldigiti(i)){ int ans = n*i; if(caldigit(ans)){ output(ans,i); isok = true; } } } if(!isok) printf("There are no solutions for %d.\n",n); if(isfirst) isfirst = false; } return 0;}
0 0
- UVA.725 Division (暴力)
- Uva 725 Division(暴力)
- UVa - 725 - Division(暴力枚举)
- UVa 725 Division 【暴力入门】
- UVa 725 Division(暴力求解)
- UVA - 725 Division (暴力枚举)
- uva 725 Division(暴力枚举)
- uva 725 Division 暴力求解入门
- UVA 725 Division(暴力枚举 简单)
- [容易] UVa OJ 725 Division 暴力枚举
- Uva 725 Division (技巧暴力)
- UVA 725 - Division
- UVA 725 - Division
- UVa 725 - Division
- UVA - 725 Division
- UVa 725 - Division
- UVa 725 Division
- UVa 725 - Division
- 二叉树的递归建立
- Robot Framework 自动化测试框架 学习方法 开源代码
- Android自定义控件——仿饿了么联动ListView
- 快速排序及优化(三路划分等)
- spring mvc +ibatis 2
- UVA.725 Division (暴力)
- 元认知能力
- CCFCSP201604-1折点计数
- qualcomm platform camera porting
- 《数字图像处理》第三版 更正印刷错误
- CI框架简介
- UVA10986
- webstorm快捷键大全
- jsp以窗口形式打开浏览器