hdu5676 ztr loves lucky numbers 【打表】
2016-05-01 14:12
344 查看
学习打表的方式,刚开始自己固定7和4的个数打表,会有很多重复效率不高,应该用dfs从1个到9个去枚举7和4。
最大有一个答案是要超过long long 的所以要特判一下
最大有一个答案是要超过long long 的所以要特判一下
/* *********************************************** Author :Maltub Email :xiang578@foxmail.com Blog :htttp://www.xiang578.com ************************************************ */ #pragma comment(linker, "/STACK:102400000,102400000") #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> //#include <bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<n;i++) #define per(i,a,n) for(int i=n-1;i>=a;i--) #define pb push_back using namespace std; typedef vector<int> VI; typedef long long ll; const ll mod=1000000007; const int N=2048; vector<long long>v; void get(int x,int y,long long sum) { //if(x+y>18||x>9||y>9) return ; if(x==y&&sum!=0) v.push_back(sum); if(x<9) get(x+1,y,sum*10+4); if(y<9) get(x,y+1,sum*10+7); } /*void get(int k) { //printf("%d\n",k); int cnt=0,a[30],a1,a2; long long ret=0; a1=a2=0; while(k>0) { if(k%2==0) {a[cnt++]=4;a1++;} else {a[cnt++]=7;a2++;} k/=2; } if(a1==a2) { for(int i=cnt-1;i>=0;i--) { ret=ret*10+a[i]; } v.push_back(ret); } }*/ int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int _; scanf("%d",&_); v.clear(); long long t; get(0,0,0); sort(v.begin(),v.end()); //for(int i=0;i<10;i++) printf("%lld\n",v[i]); while(_--) { scanf("%lld",&t); int k=lower_bound(v.begin(),v.end(),t)-v.begin(); if(t>v[k]) { for(int i=0;i<10;i++) printf("4"); for(int i=0;i<10;i++) printf("7"); printf("\n"); } else printf("%lld\n",v[k]); } return 0; }
相关文章推荐
- 2016 UESTC Training for Data Structures D - 卿学姐与魔法 CDOJ 1329 堆
- POJ-3616 Milking Time ( DP )
- opengl学习笔记
- 1000: A+B Problem
- Tiny Web服务器代码分析
- leetcode——116—— Populating Next Right Pointers in Each Node
- Nginx源码分析-核心模块剖析及常见问题
- 334. Increasing Triplet Subsequence
- 2016 UESTC Training for Data Structures C - 卿学姐与诡异村庄 CDOJ 1328 并查集
- 2016 UESTC Training for Data Structures B - 卿学姐与基本法 CDOJ 1325 线段树+离散化
- Centos 6.5 Nginx Web服务器
- HDU-1690-Bus System
- 【LeetCode】Lowest Common Ancestor of a Binary Search Tree 解题报告
- [leetcode] 241. Different Ways to Add Parentheses 解题报告
- 新的开始。
- 正确实现用spring扫描自定义的annotation
- 自我学习
- 2016 UESTC Training for Data Structures A - 卿学姐与公主 CDOJ 1324 线段树
- Gradle DSL method not found android()解决方法
- Java transient关键字的理解