SRETAN (sretan.pas/c/cpp)

题目描述

4和7是幸运数字,输入k,输出第k个只含有4和7的数。

输入格式

一行一个数k

输出格式

一行一个数表示答案

样例输入

3

样例输出

44

数据范围与约定

1 <= k <= 10^9

分析:

个位上有2个,十位上有4个,百位上有8个…… 找出规律:2^n,我们要分析第n个是在哪一位上,当前面所有方案数大于k时,可以在当前位上查找。将当前位数div 2;若k大于它,则输出7,否则输出4,直到div 2=1时,输出所有的数。

代码实现:

program exam;

var

i,j:longint;

k,t,s1,a2:int64;

function
f(a,b:int64):int64;

var

t,y:int64;

begin

t:=1;

y:=a;

while b<>0 do

begin

if b and 1=1 then

t:=t*y;

y:=y*y;

b:=b shr 1;

end;

exit(t);

end;

procedure make(x,y:int64);

begin

if x div 2=1 then

begin

if y=2 then

write(7);

if y=1 then

write(4);

close(input);

close(output);

halt; 注意,一定要halt;如果exit,会继续递归,会产生多余的数。

end;

x:=x div 2;

if y>x then

begin

write(7);

y:=y-x;

make(x,y);

end;

if y<=x then

begin

write(4);

make(x,y);

end;

end;

begin

assign(input,'sretan.in');

reset(input);

assign(output,'sretan.out');

rewrite(output);

readln(k);

for i:=1 to 60 do

begin

t:=f(2,i+1)-2;

if t>=k then

begin

s1:=f(2,i)-2;

k:=k-s1;

a2:=f(2,i);

make(a2,k);

end;

if t>k then

break;

end;

close(input);

close(output);

end.

SRETAN的更多相关文章

随机推荐

  1. Office 365 系列四 ------ 绑定公司域名

    Office 365包含了企业邮箱服务(Exchange Online),我们如果要用微软的企业邮箱,那么我们必须绑定我们公司的自己域名,而不是用微软 提供的二级域名,其实微软的整个Exchange ...

  2. C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

    原文地址:http://blog.csdn.net/wuyazhe/article/details/5627253 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...

  3. Python监控网站接口值

    Python监控网站接口值: #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'liudong' import urllib,sy ...

  4. UNICODE 7.0定义的表情符

    td.graph { font-size:24px; } UNICODE 7.0定义了78个表情符,从0x1F600到0x1F64F(其中0x1F643和0x1F644没有定义).下表中列出了这些表情 ...

  5. Struts框架——(三)动态ActionForm

    一.DynaActionForm的引入意义 使用ActionForm把表单数据单独封装起来,而且提供了自动的数据验证,简化了代码的编写,给我们带来了极大的方便. 但是,ActionForm也存在一些明 ...

  6. sublime text3的安装与汉化

    sublime text3 3126 64位的下载地址: https://download.sublimetext.com/Sublime%20Text%20Build%203126%20x64%20 ...

  7. HDU 5652(二分+广搜)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...

  8. JS编写全选,复选按钮

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. spring-data-redis注册fastjson序列化工具

    使用spring-data-redis的时候,其序列化工具自带:

  10. Spring ioc容器

    一.ioc容器 ioc (inversion of  control)即控制反转,把某一个接口选择实现类的控制权转移给Spring容器来管理.调用类对该实现类的依赖关系由ioc容器注入(DI),传统的 ...