Problem 1002 数据hack

2201303607 | 2016-04-30 21:57:28Author
1 877777777444444444 有的人只特判10^18 然后过了
2201303607 | 2016-04-30 22:08:58# 1
#include<iostream> #include<stdio.h> #include<string.h> #include <algorithm> typedef long long LL; using namespace std; LL num[1000000]; int cnt,lon; void dfs(LL nu,int i,int k1,int k2){ if(i==0){ num[cnt++]=nu; return ; } if(k1<lon) dfs(nu*10+4,i-1,k1+1,k2); if(k2<lon) dfs(nu*10+7,i-1,k1,k2+1); return; } int main(){ int T; LL N; cnt=0; for(int i=2;i<=18;i+=2){ lon=i/2; dfs(0,i,0,0); } scanf("%d",&T); while(T--){ scanf("%I64d",&N); if(N==1000000000000000000){ printf("44444444447777777777\n"); continue; } int pos = lower_bound( num, num+cnt,N)- num; printf("%I64d\n",num[pos]); } return 0; }