首页 > 代码库 > [HDOJ5878]I Count Two Three(暴力枚举,二分)
[HDOJ5878]I Count Two Three(暴力枚举,二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5878
两种做法
1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <climits> 6 #include <complex> 7 #include <fstream> 8 #include <cassert> 9 #include <cstdio>10 #include <bitset>11 #include <vector>12 #include <deque>13 #include <queue>14 #include <stack>15 #include <ctime>16 #include <set>17 #include <map>18 #include <cmath>19 using namespace std;20 #define fr first21 #define sc second22 #define cl clear23 #define BUG puts("here!!!")24 #define W(a) while(a--)25 #define pb(a) push_back(a)26 #define Rint(a) scanf("%d", &a)27 #define Rll(a) scanf("%I64d", &a)28 #define Rs(a) scanf("%s", a)29 #define Cin(a) cin >> a30 #define FRead() freopen("in", "r", stdin)31 #define FWrite() freopen("out", "w", stdout)32 #define Rep(i, len) for(int i = 0; i < (len); i++)33 #define For(i, a, len) for(int i = (a); i < (len); i++)34 #define Cls(a) memset((a), 0, sizeof(a))35 #define Clr(a, x) memset((a), (x), sizeof(a))36 #define Full(a) memset((a), 0x7f7f7f, sizeof(a))37 #define lrt rt << 138 #define rrt rt << 1 | 139 #define pi 3.1415926535940 #define RT return41 #define lowbit(x) x & (-x)42 #define onecnt(x) __builtin_popcount(x)43 typedef long long LL;44 typedef long double LD;45 typedef unsigned long long ULL;46 typedef pair<int, int> pii;47 typedef pair<string, int> psi;48 typedef pair<LL, LL> pll;49 typedef map<string, int> msi;50 typedef vector<int> vi;51 typedef vector<LL> vl;52 typedef vector<vl> vvl;53 typedef vector<bool> vb;54 55 const int maxn = 33;56 int n;57 int x2[maxn], x3[maxn], x5[maxn], x7[maxn];58 vector<int> ret;59 60 signed main() {61 // FRead();62 Cls(x2); Cls(x3); Cls(x5); Cls(x7); ret.clear();63 x2[0] = 1; x3[0] = 1; x5[0] = 1; x7[0] = 1;64 x2[1] = 2; x3[1] = 3; x5[1] = 5; x7[1] = 7;65 ret.push_back(1);66 ret.push_back(2);67 ret.push_back(3);68 ret.push_back(5);69 ret.push_back(7);70 For(i, 2, 31) {71 x2[i] = x2[i-1] * 2;72 x3[i] = x3[i-1] * 3;73 x5[i] = x5[i-1] * 5;74 x7[i] = x7[i-1] * 7;75 }76 For(a, 0, 31) {77 For(b, 0, 31) {78 For(c, 0, 31) {79 For(d, 0, 31) {80 int tmp = x2[a]*x3[b]*x5[c]*x7[d];81 if(tmp > 0 && tmp <= 1000000000LL) {82 ret.push_back(tmp);83 }84 }85 }86 }87 }88 sort(ret.begin(), ret.end());89 int T;90 Rint(T);91 W(T) {92 scanf("%I64d", &n);93 printf("%I64d\n", *lower_bound(ret.begin(), ret.end(), n));94 }95 RT 0;96 }
1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <climits> 6 #include <complex> 7 #include <fstream> 8 #include <cassert> 9 #include <cstdio>10 #include <bitset>11 #include <vector>12 #include <deque>13 #include <queue>14 #include <stack>15 #include <ctime>16 #include <set>17 #include <map>18 #include <cmath>19 using namespace std;20 #define fr first21 #define sc second22 #define cl clear23 #define BUG puts("here!!!")24 #define W(a) while(a--)25 #define pb(a) push_back(a)26 #define Rint(a) scanf("%d", &a)27 #define Rll(a) scanf("%I64d", &a)28 #define Rs(a) scanf("%s", a)29 #define Cin(a) cin >> a30 #define FRead() freopen("in", "r", stdin)31 #define FWrite() freopen("out", "w", stdout)32 #define Rep(i, len) for(int i = 0; i < (len); i++)33 #define For(i, a, len) for(int i = (a); i < (len); i++)34 #define Cls(a) memset((a), 0, sizeof(a))35 #define Clr(a, x) memset((a), (x), sizeof(a))36 #define Full(a) memset((a), 0x7f7f7f, sizeof(a))37 #define lrt rt << 138 #define rrt rt << 1 | 139 #define pi 3.1415926535940 #define RT return41 #define lowbit(x) x & (-x)42 #define onecnt(x) __builtin_popcount(x)43 typedef long long LL;44 typedef long double LD;45 typedef unsigned long long ULL;46 typedef pair<int, int> pii;47 typedef pair<string, int> psi;48 typedef pair<LL, LL> pll;49 typedef map<string, int> msi;50 typedef vector<int> vi;51 typedef vector<LL> vl;52 typedef vector<vl> vvl;53 typedef vector<bool> vb;54 55 inline bool scan_d(LL &num) {56 char in;bool IsN=false;57 in=getchar();58 if(in==EOF) return false;59 while(in!=‘-‘&&(in<‘0‘||in>‘9‘)) in=getchar();60 if(in==‘-‘){ IsN=true;num=0;}61 else num=in-‘0‘;62 while(in=getchar(),in>=‘0‘&&in<=‘9‘){63 num*=10,num+=in-‘0‘;64 }65 if(IsN) num=-num;66 return true;67 }68 69 const int maxn = 33;70 LL n;71 LL k[5] = {2,3,5,7};72 vector<LL> ret;73 74 void dfs(LL cur, int depth) {75 if(depth == 4) ret.push_back(cur);76 else {77 for(LL i = 1; cur * i <= 1000000000LL; i *= k[depth]) {78 dfs(LL(cur*i), depth+1);79 }80 }81 }82 83 signed main() {84 // FRead();85 int T;86 Rint(T);87 dfs(1LL, 0);88 sort(ret.begin(), ret.end());89 W(T) {90 scan_d(n);91 printf("%I64d\n", *lower_bound(ret.begin(), ret.end(), n));92 }93 RT 0;94 }
[HDOJ5878]I Count Two Three(暴力枚举,二分)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。