题目描述

4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字。

前几个幸运数字为:4,7,44,47,74,77,444,447...

现在输入一个数字K,输出第K个幸运数。

输入

第一行一个数字T(T<=1000)表示测试数据的组数。对于每组测试数据,输出一个数K

输出

每组数据输出一行,第K个幸运数。

样例输入

3
5
100
1000000000

样例输出

74
744747

77477744774747744747444444447

分析:

我们发现4是第一个,7是第二个,44是第三个,47是第四个

不如将4看成0,7看成1,然后就得到二进制数了

4是0

7是1

可是44也变成0了,这就不太好了...于是想到在所有辛运数字前面加上7(也就是所有二进制前加一个1)这样我们就可以再列出一个表了:

4是10

7是11

44是100

47是101

74是110....哇真的是二进制诶.....所以直接将n像我那样拆分,就可以得到一个二进制串,再将二进制串变成十进制后减一即可。

/**
* 将4和7看成二进制0和1, 4->0 7->1
*
* 一位数有2个 pow(2,1)
* 4->0
* 7->1
*
* 2位数有4个 pow(2,2)
* 44->00
* 47->01
* 74->10
* 77->11
*
* 3位数有8个 pow(2,3)
* 444->000
* 447->001
* 474->010
* 477->011
* 744->100
* 747->101
* 774->110
* 777->111
*
* n位数有pow(2,n)个
*
* 求第k个幸运数,即求k的bits是几位数
* for (i;i++) {
* count += Math.pow(2,i);
* if (k <= count) {
* break;
* }
* }
* bits = i;
*/

代码:

public class Main
{
//求出第K个幸运数的“位数”
private static int getBits(int k)
{
int count=0;
int bit=0;
while(count<k)
{
++bit;
count+=Math.pow(2,bit);
}
return bit; } private static void slove(int[] arr)//static
{ for(int i=0;i<arr.length;i++)
{
int bits=getBits(arr[i]);
int addOne=arr[i]+1;
//将十进制数转化为二进制串
String bitStr=Integer.toBinaryString(addOne);
//将二进制串转化为字符数组;
char[] bitArr=bitStr.toCharArray();
//移除二进制串中的最高位的1
char[] reArr=new char[bits];
StringBuilder str=new StringBuilder(bits);
for(int j=0;j<bits;j++)
{
reArr[j]=bitArr[j+1];
//将01串变为47串
if(reArr[j]=='0')
{
str.append('4');
}
else
{
str.append('7');
} }//for System.out.println(str.toString());
} } public static void main(String[] args)
{
Scanner sc=new Scanner(System.in); while(sc.hasNextInt())
{
int arrayNum=sc.nextInt();
int[] inputNum=new int[arrayNum];
for(int i=0;i<arrayNum;i++)
{
inputNum[i]=sc.nextInt();
} slove(inputNum); }//while }

测试效果:

京东2017校园招聘笔试题 【第K个幸运数】的更多相关文章

  1. 2014 WAP校园招聘笔试题

    2014 WAP校园招聘笔试题 Problem's Link:   http://www.doc88.com/p-6751117015483.html WAP公司笔试题 We are planning ...

  2. google2013校园招聘笔试题(全国)

    google2013校园招聘笔试题 1. 单项选择题1.1如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少.关于一下几种典型的数据传输速率:1.使用USB2.0闪存盘,往USB闪存盘上拷贝 ...

  3. Microsoft 2013校园招聘笔试题及解答

    Microsoft 2013校园招聘笔试题及解答 题目是自己做的,求讨论.吐槽.拍砖 1.      Which of the following callingconvension(s) suppo ...

  4. Microsoft2013校园招聘笔试题

    Microsoft2013校园招聘笔试题 继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently ...

  5. C# - 2017微软校园招聘笔试题 之 MS Recognition[待解决]

    MS Recognition 在线提交: hihoCoder 1402 http://hihocoder.com/problemset/problem/1402 类似: OpenJudge - I:P ...

  6. PPS2013校园招聘笔试题

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11473405 一.简答题 (1)一位老师有2个推理能力很强的学生,他告诉 ...

  7. 2012Google校园招聘笔试题

    1.已知两个数字为1~30之间的数字,甲知道两数之和,乙知道两数之积,甲问乙:“你知道是哪两个数吗?”乙说:“不知道”.乙问甲:“你知道是哪两个数吗?”甲说:“也不知道”.于是,乙说:“那我知道了”, ...

  8. 2012Hulu校园招聘笔试题

    一.填空 侧重逻辑思维,没有语言.具体技术考察,大部分属于组合数学.算法.比较基本的知识点有二元树节点树.最小生成树.Hash函数常用方法等. 二.编程题 1.正整数剖分 2.AOE关键路径 3.二元 ...

  9. 2013Hulu校园招聘笔试题

    填空题:1.中序遍历二叉树,结果为ABCDEFGH,后序遍历结果为ABEDCHGF,先序遍历结果为?  FCBADEGH  如下图所示: 2.对字符串HELL0_HULU中的字符进行二进制编码,使得字 ...

随机推荐

  1. LR常用函数以及调用自定义函数

    2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...

  2. 5.2视图中的Order by

    创建排序视图的企图本身就是错误的,因为视图表示一个表,而表是不会对行排序的:

  3. 转载:log4j.properties log4j.xml 路径问题

    自动加载配置文件: (1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解.log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找lo ...

  4. ArcEngine读取数据(数据访问) (转)

    读取和访问数据是进行任何复杂的空间分析及空间可视化表达的前提,ArcGIS支持的数据格式比较丰富,下面就这些格式Shapefile.Coverage.Personal Geodatabase.Ente ...

  5. SQL中判断一串字符中是否有特定的字符

    ),) SET @s='1,2,3,4,5,6,7,8,9,10' 一:SET @sql='select col='''+ replace(@s,',',''' union all select '' ...

  6. DragSelectRecyclerView 长按滑动多选图像android特效

    高仿Google相册多选效果,长按某一item后然后滑动选择到任意item,效果很不错,适合相册页面多选部分效果. 本例子主要是自定义DragSelectRecyclerView通过如下展示gridv ...

  7. 错误提示sudo: no tty present and no askpass program specified Sorry, try again.

    php调用shell脚本的svnup.php文件内容: <?set_time_limit(0);//$output = array();$ret = 0;exec("/usr/bin/ ...

  8. unity3d 射弹基础案例代码分析

    #pragma strict import UnityEngine.UI; function Start () { } var speed : int = 5; var newobject : Tra ...

  9. java 的SPI机制

    今天看到spring mvc 使用Java Validation Api(JSR-303)进行校验,需要加载一个 其具体实现(比如Hibernate Validator), 本来没有什么问题,但是突然 ...

  10. jquery EasyUI datagrid 的扩展

    接触 easyui 半年,js学的不深.大神请路过. 直接扩展 添加方法: $.extend($.fn.datagrid.methods, { getSelectedIndex: function ( ...