您的位置:首页
uva725_一道水题(优化到了29ms)
2017-07-20 16:30
344 查看
///////////////////////////////////////////////////////////////////////////////////////////////////////
作者:tt2767
声明:本文遵循下面协议自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0
查看本文更新与讨论请点击:http://blog.csdn.net/tt2767
链接被删请百度: CSDN tt2767
///////////////////////////////////////////////////////////////////////////////////////////////////////
能够用 n * fghij 去枚举 abcde 判重就可以
由于fghij 可能自身反复较多。能够先判掉。节省时间;
假设不写成函数的形式还能更快一些。由于第二次判段中x,已经推断过了。
书中的做法是把两个数字化成字符串去。排序后推断用时
123ms
作者:tt2767
声明:本文遵循下面协议自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0
查看本文更新与讨论请点击:http://blog.csdn.net/tt2767
链接被删请百度: CSDN tt2767
///////////////////////////////////////////////////////////////////////////////////////////////////////
能够用 n * fghij 去枚举 abcde 判重就可以
由于fghij 可能自身反复较多。能够先判掉。节省时间;
假设不写成函数的形式还能更快一些。由于第二次判段中x,已经推断过了。
书中的做法是把两个数字化成字符串去。排序后推断用时
123ms
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> ////////////////////// #include<iostream> #include<algorithm> #include<string> #include <iterator> #include<sstream> #include<functional> #include<numeric> /////////////////////// #include<vector> #include<map> #include <stack> #include<queue> #include<set> #include <bitset> #include <list> using namespace std; #define lch(x) ((x) << 1) #define rch(x) ((x)<<1|1) #define dad(x) ((x)>>1) #define lowbit(x) ((x)&(-x)) typedef long long int LL; const int INF = ~0U>>1; const double eps = 1e-6; const long double PI = acos(0.0) * 2.0; //const int N = 10 + ; const int MAX = 98765,MIN = 1234; bool check(int x , int l1,int y ,int l2); int main() { //ios::sync_with_stdio(false); #ifdef ONLINE_JUDGE #else freopen("in.txt", "r", stdin); freopen("out3.txt", "w", stdout); #endif int n; int tot = 0; while(scanf("%d",&n)==1&& n) { if(tot++) puts(""); bool flag=1; for(int i = MIN ; i<= MAX ; i++) { int l1 = log10(i)+1; if(!check(i,l1,-1,-1)) continue; int j = i*n; int l2 = log10(j)+1; if(j>MAX) break; if(!check(i,l1,j,l2)) continue; flag = 0; printf("%05d / %05d = %d\n",j,i,n); } if(flag) printf("There are no solutions for %d.\n", n); } return 0; } bool check(int x , int l1,int y ,int l2) { bool re[10]; memset(re,0,sizeof(re)); if(l1==4&&l2==4) return 0; if(l1==4 || l2==4) re[0]=1; while(x) { if(re[x%10]) return 0; re[x%10] = 1; x/=10; } if(y != -1) while(y) { if(re[y%10]) return 0; re[y%10] = 1; y/=10; } return 1; }
相关文章推荐
- uva725_一道水题(优化到了29ms)
- UVA - 725(水题)
- 水题先来一道,UVA6345
- UVa 725:Division(水题)
- 水题,优化,高效(年龄排序,uva 11462)
- 水题,高效,优化(开放式学分制,uva 11078)
- 论一道水题dp的优化。。。。
- UVA 10010 - Where's Waldorf? 水题一道
- UVa 10066 - The Twin Towers(LCS水题)
- 一道简单的递推题(快速幂+矩阵乘法优化+滚动数组)
- 这是一道水题 UESTC - 636
- UVA 11461 - Square Numbers(水题)
- HDU 1021 一道水题
- UVa 11040 (水题) Add bricks in the wall
- uva 156 - Ananagrams(排序水题)
- Uva 11292 Dragon of Loowater - 水题