幸运数字 解题报告

幸运数字 解题报告

题目描述 :数字4和7是幸运数字,而其他的都不是幸运数字。一个整数是幸运数字,当且仅当它的十进制表示只包含幸运数字。
现在让你给出第K大的幸运数字。
题目链接
思路:因为最大K值可以给到 10的九次 所以不能强行做。看到一位数时有两种情况 4和7 二位数有四种 联想到了二进制。将K值加一后转为二进制 0为4 1为7 按顺序输出就是代表的第K大的幸运数字。。
(因为早上研究了一下快速幂 发现转二进制可以用位移来实现 自己还没有试过 给出的代码是普通的。)
(不知道别人怎么做的 先把自己想到的记录一下吧 省的忘记……)
(这是第一篇博客 瞎写试试水 哈哈)

#include
#include
using namespace std;
int a[33],b[33];
void zh(long long int x)//转换二进制用的函数  名字简单易懂。。。。。。。
{
	int c[33],i,j;
	i=0;
	while(x>0)
	{
		c[++i]=x%2;
    	x=x/2;
	}
	for(j=1;j<=i;j++)
	{a[j]=c[j];}
	i=0;
}
int main()
{
	long long int m,n,s;
	while(cin>>n)
	{
		memset(a,0,sizeof(a));
		zh(n+1);
		s=32;
		while(a[s]==0&&s>1)s--;
		for(int i=s-1;i>=1;i--)
		{
			if(a[i]==0)cout<<4;
			if(a[i]==1)cout<<7;
		}
	//	for(int i=32;i>0;i--)cout<0;i--)cout<

你可能感兴趣的:(解题报告)