描述
喵哈哈村最近热衷于玩一个叫做狼人杀的游戏!
星星同学今天她抽到的是狼的身份,按照她的一贯玩法,她喜欢无情的屠杀掉所有的神。
她现在已经很清楚了场上的预言家,女巫,猎人是谁。但是她唯一不知道的就是白痴这张神牌在谁的身上。于是她诈一诈她的下家——天行廖。
星星同学的逻辑是这样的:她可以考一道题给天行廖,如果天行廖能够答上来的话,那么天行廖肯定不是白痴,因为白痴是答不上题的。
这道题是这样的:
如果一个数只包含4和7的话,那么这个串就是幸运数,比如4777,774就是幸运数,而467就不是幸运数。
如果一个幸运数中包含的4和7的数量相同的话,那么这个数就是超级幸运数,比如4747就是超级幸运串,447就不是。
现在给你一个n,你需要找到一个最小的超级幸运数,并且这个超级幸运数大于等于n。
本题包含若干组测试数据。
第一行一个整数n。
满足 1<=n<=10^9
输出最小的超级幸运数,。
47 4500
47 4747
因害怕时间超限,或者是漏掉某些情况而导致答案错误,故果断选择了打表。
#include<iostream> using namespace std; const int mm=1e9+9; //long long a[110]; long long a[101]={47,74,4477,4747,4774,7447,7474,7744,444777,447477, 447747,447774,474477,474747,474774,477447,477474,477744,744477,744747, 744774,747447,747474,747744,774447,774474,774744,777444,44447777,44474777, 44477477,44477747,44477774,44744777,44747477,44747747,44747774,44774477,44774747,44774774, 44777447,44777474,44777744,47444777,47447477,47447747,47447774,47474477,47474747,47474774, 47477447,47477474,47477744,47744477,47744747,47744774,47747447,47747474,47747744,47774447, 47774474,47774744,47777444,74444777,74447477,74447747,74447774,74474477,74474747,74474774, 74477447,74477474,74477744,74744477,74744747,74744774,74747447,74747474,74747744,74774447, 74774474,74774744,74777444,77444477,77444747,77444774,77447447,77447474,77447744,77474447, 77474474,77474744,77477444,77744447,77744474,77744744,77747444,77774444,4444477777};//注意,最后最好单独添加一个上限4444477777. int main() { /*long long k=0,sum,count,n,i,m; for(i=47;i<=77774444;i++) { n=i; bool flag=true; sum=count=0; while(n) { m=n%10; if(m==4 || m==7) { if(m==4) sum++; else count++; } else { flag=false; break; } n/=10; } if(flag==true && sum==count) a[k++]=i; } cout<<k<<endl; for(i=0;i<k;i++) { if(i) cout<<','; cout<<a[i]; }*/ long long n,i; while(cin>>n) { for(i=0;i<=100;i++) { if(a[i]>=n) { cout<<a[i]<<endl; break; } } } return 0; }