hdu5878 dfs
来源:互联网 发布:单片机工作过程 编辑:程序博客网 时间:2024/06/06 00:00
http://acm.hdu.edu.cn/showproblem.php?pid=5878
题意: 对于一个n,找到一个的数刚好大于等于n数,输出;数据范围10e9;
dfs打表,为了避免出现2 * 2 * 3 * 2 2 * 2 * 2 * 3重复的情况,打表的时候注意技巧
之后二分;
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cctype>#include <stack>#include <queue>#include <cmath>#include <algorithm>#include<map>#include<cstring>#include<cmath>using namespace std;typedef long long ll;const int maxn = 1000000;#define INF 0x3f3f3f3fll a[maxn];int len ;void dfs(ll x,int pre){ if(x > INF) return; a[len ++] = x; if(pre == 2) { dfs(x * 2, 2); dfs(x * 3,3); dfs(x * 5,5); dfs(x * 7,7); } else if(pre == 3) { dfs(x * 3,3); dfs(x * 5,5); dfs(x * 7,7); } else if(pre == 5) { dfs(x * 5,5); dfs(x * 7,7); } else dfs(x * 7,7);}int main(){ len = 0; dfs(1,2); sort(a,a + len);// for(int i = 0; i < len ; i ++)// cout << i << " " << a[i] << endl; ll n; int Tcase; scanf("%d",&Tcase);// while( ~ scanf("%I64d",&n)) for(int ii = 1; ii <= Tcase; ii ++) { scanf("%I64d",&n); int point = upper_bound(a,a + len,n) - a; if(a[point - 1] == n) { cout << n << endl; continue; } cout << a[point] << endl; } return 0;}
0 0
- hdu5878 dfs
- hdu5878 我能23
- HDU5878-I Count Two Three
- hdu5878 I Count Two Three(水题)
- 青岛网赛1001 HDU5878 I Count Two Three
- HDU5878 Cure 2016 ACM/ICPC Asia Regional Qingdao Online
- hdu5878 2016青岛网络赛-打表+二分
- hdu5878 I Count Two Three -ICPC网络赛青岛赛区
- 【HDU5878】I Count Two Three(打表+二分)
- 暴力求解法--打表 hdu5878 I count Two Three
- DFS
- DFS
- dfs
- dfs
- dfs
- dfs
- DFS
- DFS
- 利用java.nio.charset.CharsetDecoder自动识别字符集
- Windows环境下mysql 5.7.16安装
- CODEVS 2845 排序的代价
- PADS Layout转Gerber
- python初学者学习笔记(一)简单的爬虫
- hdu5878 dfs
- pyFormUI: 一个简单的Python GUI界面框架
- web前端记录
- __attribute__((visibility("default")))
- 安卓基础知识二
- 自定义圆形的ImageVIew
- (44)Air Band OpenCV2.4.13_点-多边形检测
- java8时间转换函数学习,教你脱离jdf转换的痛苦
- 从MediaPlayerServic出发查看服务注册交互流程