时间限制: 1 Sec 内存限制: 128 MB

题目描述
数字4和7是幸运数字,而其他的都不是幸运数字。一个整数是幸运数字,当且仅当它的十进制表示只包含幸运数字。
现在让你给出第K大的幸运数字。
输入
第一行一个整数K(1<=K<=1,000,000,000)
输出
第K大的幸运数字。
样例输入
1
样例输出
4
相信诸位都会把前几种情况给列出来,来找规律

幸运数字 总个数
4 7 2
44 47 74 77 2+4
444 447 474 477 744 747 774 777 2+4+8

……
很容易可以发现以下规律:
(1)每一行的幸运数字的个数=2^n(n为行数)
(2)每一行幸运数字的位数=n
……(欢迎补充)
我刚开始做到这里,打算直接进行十进制的枚举,先算出第K个幸运数字在第几行,然后再算出这一行最大的幸运数字,一直减减(- -)到K,但是这无疑是傻瓜式的暴力法。
那还有什么好的方法呢?
在考虑了好久,其实是请教大佬之后找到方法的 。
很显然,数字只包含4和7,这和二进制很像啊,我们不妨把4看做0,7看做1,这样不仅仅方便,而且遵循大小顺序,来试试。
具体思路
①算出K是第几行,即有几位数;
②算出K所在的这一行的第一个幸运数字是总的第几个,设为n;
③k-n,进行二进制的转换。
具体见代码

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <math.h>
#include <map>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
int a[35];//题目给定范围是1e9,大约2^30
int main()
{int k,dig=0,i,j,s,m=1,t,w;scanf("%d",&k);w=k+1;while(w!=1)//计算位数,至于为何这样写,可以自己试一下,就知道了{dig++;w/=2;}s=dig;while(s--){m*=2;}m--;t=k-m;for(i=0;i<dig;i++){if(t%2==0)a[i]=4;elsea[i]=7;t/=2;}for(i=dig-1;i>=0;i--)//算出的顺序其实是倒着的,不信自己列举几个康康printf("%d",a[i]);return 0;
}

幸运数字II(二进制问题)相关推荐

  1. 【牛客】幸运数字II题解

    原题链接 题目描述 定义一个数字为幸运数字当且仅当它的所有数位都是4或者7. 比如说,47.744.4都是幸运数字而5.17.467都不是. 定义next(x)为大于等于x的第一个幸运数字.给定l,r ...

  2. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

    美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运 ...

  3. 关于4和7的幸运数字生成方法

    所谓的4和7幸运数字指:4.7.44.47.74.77.444-- 第一个幸运数字为4,第七个幸运数字为444 以下采用了两种方法求第n位的幸运数字: 方法一:二进制思想 function lucky ...

  4. 【bzoj1853】[Scoi2010]幸运数字 容斥原理+搜索

    题目描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是&quo ...

  5. 幸运数字Ⅱ(树型结构构造答案,打表)难度⭐⭐

    幸运数字Ⅱ 打表即可,观察数据,是一组简单的二叉树的树形结构,所以引申出这一类的题,比如题目为1,2,3,这三个数,那么就是一个三叉树 0 4 7 44 47 74 77 444 447 474 47 ...

  6. lintcode :Remove Duplicates from Sorted Array II 删除排序数组中的重复数字 II

    题目: 删除排序数组中的重复数字 II 跟进"删除重复数字": 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A ...

  7. [luogu2576 SCOI2010] 幸运数字 (容斥原理)

    传送门 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,66 ...

  8. 牛客网 牛客练习赛13 A.幸运数字Ⅰ

    A.幸运数字Ⅰ 链接:https://www.nowcoder.com/acm/contest/70/A 来源:牛客网 水题. 代码: 1 #include<iostream> 2 #in ...

  9. BZOJ4568:[SCOI2016]幸运数字——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4568 https://www.luogu.org/problemnew/show/P3292 A ...

最新文章

  1. 山寨c 标准库中的getline 函数
  2. Android - TextureView, SurfaceView和GLSurfaceView 以及 SurfaceTexture
  3. Snort里如何将读取的包记录存到指定的目录下(图文详解)
  4. JVM内存溢出分析-实战JVM(二)
  5. bootstrapValidator remote 验证问题
  6. java固定数组_Java在固定长度的数组里加入一个数
  7. NYOJ题目96 n-1位数
  8. Zbrush 2022 for Mac(数字雕刻和绘画程序)
  9. ubunut18.04 pycharm创建快捷方式和右键创建空白文件夹
  10. ubuntu下使用pip卸载包时出现Cannot uninstall scipy
  11. FudanNLP  java -based
  12. js微信抢红包脚本代码_autojs抖音抢红包脚本!源码分享
  13. 搭建FTP站点(Windows)
  14. 如何辨别BGP带宽的真假?
  15. 真励志!从月薪2300深圳流水线女工,逆袭为年薪80万谷歌工程师,又因疫情失业:我绝不轻易认输...
  16. Big Sur系统下的mac重置
  17. java解压obb_obb文件怎么解压 打开obb文件的注意事项 - 驱动管家
  18. VCPKG安装opencv后VS2019无法找到viz.hpp
  19. 为什么登出网页浏览器重定向到/login?logout
  20. [Practical.Vim(2012.9)].Drew.Neil.Tip04学习摘要

热门文章

  1. 网络精准营销方式包括哪些
  2. catia如何画花键_CATIA花键绘制万向节的装配及螺纹绘制
  3. 妈妈的味道,从一碗北极虾荠…
  4. 【风雨哈佛路】原型——全美“奇迹女孩”:从流浪女到哈佛女
  5. 人工智能在医疗发展突破分析
  6. 电商API接口系列,数据分享
  7. 小程序应该怎样做推广引流
  8. 转载与积累系列 - Docker 核心技术与实现原理
  9. python获取文件夹名称、文件名、去除后缀的文件名、文件改名等
  10. 基于典型相关性分析(CCA)的多视图学习方法综述