1. 程式人生 > >51Nod 1010 只包含因子2 3 5的數 | 預處理+二分

51Nod 1010 只包含因子2 3 5的數 | 預處理+二分

black pri inf name ini 包含 def pac ++

技術分享

Input示例
5
1
8
13
35
77
Output示例
2
8
15
36
80

分析:
將所有的只含有2 3 5因子的數打一個表保存在一個數組裏,然後二分查找第一個>=數組裏的數,輸出
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define rep(i,a,n) for(int i = a; i < n; i++)
#define repe(i,a,n) for(int i = a; i <= n; i++)
#define per(i,n,a) for(int i = n; i >= a; i--)
#define
clc(a,b) memset(a,b,sizeof(a)) #define INF 1e18+100 #define N 1000010 typedef long long LL; const int MAXN = 70*70*70; LL a[MAXN]; int cnt = 0; void Init() { cnt = 0; for(LL i=1; i<INF; i*=2)///(註意i,j,k是LL的) for(LL j=1; j*i<INF; j*=3) for(LL k=1; i*j*k<INF; k*=5) a[cnt
++] = i*j*k; } int main() { Init(); sort(a, a+cnt); int T; cin>>T; while(T--) { LL n; scanf("%lld",&n); printf("%lld\n",a[lower_bound(a+1,a+cnt+1,n)-a]); } return 0; }

51Nod 1010 只包含因子2 3 5的數 | 預處理+二分