UVA - 10396(简单暴力)
来源:互联网 发布:数据接口大全 编辑:程序博客网 时间:2024/06/08 11:06
直接暴a,然后dfs可行b,求b时如果中间值超过上限则要剪枝
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <map>#include <set>using namespace std;int max_[3]= {9999,999999,99999999};int lim[3] = {2,3,4};int st[3] = {10,100,1000};int ed[3] = {99,999,9999};int mi[3][10]={{0,10,1},{0,100,10,1},{0,1000,100,10,1}};int cnt[10];set<int> vis[3];void inline cal(int n,int f){ int tn = n; while(tn){ cnt[tn%10]+=f; tn/=10; }}void dfs(int p,int sum,int a,int I){ if(p == lim[I]+1){ memset(cnt,0,sizeof(cnt)); int b = sum/a; cal(sum,1); cal(b,-1); cal(a,-1); for(int i=0;i<=9;i++) if(cnt[i]!=0) return ; if( !(sum&1) ){ vis[I].insert(sum); } return ; } int st=0; if(p == 1 || (p==lim[I]&&a%10==0) ) st++; for(int i=st;i<=9;i++){ if(sum+a*i*mi[I][p]<=max_[I]){ dfs(p+1,sum+a*i*mi[I][p],a,I); } }}int main(){ for(int i=0;i<3;i++){ for(int j=st[i];j<ed[i];j++){ dfs(1,0,j,i); } } int n; while(scanf("%d",&n)==1&&n){ int p ; if(n==4) p=0; else if(n==6) p=1; else p = 2; for(set<int>::iterator it=vis[p].begin();it!=vis[p].end();it++){ printf("%d\n",*it); } printf("\n"); }}
0 0
- UVA - 10396(简单暴力)
- UVA 725 Division(暴力枚举 简单)
- uva 10396 - Vampire Numbers(暴力)
- UVa 10396 - Vampire Numbers (暴力)
- uva 216 - Getting in Line 简单回溯 和 暴力求解
- UVA 10396 - Vampire Numbers(暴力打表)
- UVA 185(暴力DFS)
- uva 654 - Ratio(暴力)
- uva 225 - Golygons(暴力)
- uva 11520 暴力
- uva 1509 - Leet(暴力)
- UVA 1509 Leet(暴力)
- uva 10167(暴力求解)
- uva 216(暴力求解)
- uva 10344(暴力求解)
- uva 10012(暴力求解)
- uva 165(暴力求解)
- uva 167(暴力求解)
- 微信公众平台自定义菜单及高级接口PHP SDK
- cubie board编译出错
- 第六周项目4——成员函数,友元函数和一般函数的区别
- js call
- Java 单文本替换并计算替换的个数
- UVA - 10396(简单暴力)
- 电热恒温鼓风干燥箱的产品操作流程
- iOS开发网络篇—实现一个视频播放客户端小应用(二)
- 用clang编译SPEC2006 过程中的问题(与gcc,ld相关)
- 配置多个git仓库
- Mysql group by top N的问题
- span设置固定宽度
- Objective-C创建目录接口createDirectoryAtPath:withIntermediateDirectories:attributes:error:中参数attributes的设置
- 内省、注解、类加载器