幸运数字4&7

Description

我们认为只包含4和7的数字为幸运数字,比如4, 7, 44, 47, 74…
现在对于给定的N,请你求出第N个幸运数字。

Input

第1行:1个整数N

Output

第1行:1个数,表示第N个幸运数字

Sample Input

5

Sample Output

74


题外话:看了下其他题解,这个好像不是正解?思想都差不多


代码

#include <iostream>
#include <cstdio>
using namespace std;
int ans[15];
int main()
{
	int n,cnt; scanf("%d",&n);
	for(cnt=1;;++cnt) if((1<<(cnt+1))-2>=n) break;//(1<<(cnt+1))-2表示:小于等于cnt未的幸运数字的个数
	n-=((1<<cnt)-2);//位数为cnt,第n个
	for(int i=cnt-1;i>=0;--i)
	{
		if(n>(1<<i)) ans[i]=7,n-=(1<<i);
		else ans[i]=4;
	}
	for(int i=cnt-1;i>=0;--i) printf("%d",ans[i]);
	return 0;
}
原文地址:https://www.cnblogs.com/wuwendongxi/p/13321772.html