第K个幸运数字(4、7)
2024-10-19 06:20:15
题目:4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字,前几个幸运数字为:4,7,44,47,74,77,444,447······
输出第K个数字。
思路是:
将4换成0,7换成1,那么
4, 7, 44, 47, 74, 77, 444, 447... 变成了
0, 1, 00, 01, 10, 11, 000, 001...对应的十进制是:
0, 1, 0, 1, 2, 3, 0, 1...看着没什么规律啊,不好处理,关键的问题在于00,01,000等都因为前边是0失去了本身的大小,那么如果我们在前面都加个1呢?
10, 11, 100, 101, 110, 111, 1000, 1001...变成十进制:
2, 3, 4, 5, 6, 7, 8, 9...
规律出来了。
我要求第K个数字,那么反向推不就得了。
先把K变成二进制(K+1的二进制),然后去掉最前面的1,然后将0替换为4,将1替换为7。答案就出来了。
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[]; ll f(ll n){
n+=;
int b[];
int i,j=; while(n){
b[j++]=n%;
n/=; }
for(i=j-;i>=;i--){
if(b[i]==)
cout<<'';
else if(b[i]==)
cout<<''; }
}
int main(){
ll t;
cin>>t;
for(int k=;k<t;k++){
cin>>a[k];
f(a[k]);
cout<<endl;
} return ;
}
最新文章
- Linux驱动学习 —— 在/sys下面创建目录示例
- 5 Convert Sorted List to Binary Search Tree_Leetcode
- 一鼓作气 博客--第三篇 note3
- C++ 连接数据库的入口和获取列数、数据
- QT QString 很全的使用 (转)
- Java虚拟机JVM学习02 类的加载概述
- Flowplayer-JavaScript API
- [转载] Linux下多路复用IO接口 epoll select poll 的区别
- iOS:自动布局Autolayout
- TCP/IP 相关知识点与面试题集
- js 函数闭包内部返回函数体调用方法难点解答
- 命令行界面下的用户和组管理之usermod的使用
- 《Linear Algebra and Its Applications》-chaper1-向量方程、矩阵方程和线性方程组
- Android生存指南:Eclipse快捷键
- java去重(1通过迭代器,2直接赋值)
- [LeetCode] Non-negative Integers without Consecutive Ones 非负整数不包括连续的1
- outlook VSTO
- python 的基础 学习 12天,函数
- CentOS7安装MySQL并设置远程登录
- Tomcat日志文件catalina.out文件过大问题
热门文章
- slf4j日志使用
- release 步骤
- 【UML】NO.46.EBook.5.UML.1.006-【UML 大战需求分析】- 用例图(Use Case Diagram)
- Centos安装Oracle及问题处理
- 使用 Asp.net core 2.0 + Angular 4 构建车辆管理的Web应用程序
- SpringMvc HandlerMappings 何时初始化?
- K均值
- vue store存储commit和dispatch
- vue mandmobile ui实现三列列表的方法
- 事件冒泡以及onmouseenter 和 onmouseover 的不同