51Nod 1010 只包含因子2 3 5的數 | 預處理+二分
阿新 • • 發佈:2017-09-01
black pri inf name ini 包含 def pac ++
Input示例
5 1 8 13 35 77Output示例
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--) #defineclc(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的數 | 預處理+二分