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. windows下运行的linux服务器批量管理工具(带UI界面)

    产生背景: 由于做服务器运维方面的工作,需要一人对近千台LINUX服务器进行统一集中的管理,如同时批量对LINUX服务器执行相关的指令.同时批量对LINUX服务器upload程序包.同时批量对LINU ...

  2. VC++ 如何让ScrollView视图显示滚动条

    CSize sizeTotal; sizeTotal.cx = ;//值设大点 sizeTotal.cy = ;//值设大点 SetScrollSizes(MM_TEXT, sizeTotal); 显 ...

  3. poj1157LITTLE SHOP OF FLOWERS

    Description You want to arrange the window of your flower shop in a most pleasant way. You have F bu ...

  4. IOS系列swift语言之课时六

    这节课需要讲的就是协议,方法,委托模式(依赖倒转) 代码刷起中...... // // main.swift // ExAndProtocol // // Created by David on 23 ...

  5. angular 调试 js (分 karms protractor / test e2e unit )

    首页订阅 Protractor端到端的AngularJS测试框架教程 2014年01月18日 分类:教程, JavaScript, AngularJS Protractor是一个建立在WebDrive ...

  6. centos如何卸载软件

    需要看你的软件包格式: 如果你带有yum,可以直接yum remove xxx如果是rpm包,rpm -e xxxtar包的话需要你直接删除该文件或者make uninstall xxx常见的就这三种

  7. Oracle:ORA-00955: name is already used by an existing object

    下午从生产库导出了一份表结构,用来测试一些问题,由于生产库连接着其他用户下的表所以通过视图在本地模拟一下,于是创建视图: create or replace view csews as select ...

  8. ios 正则表达式之验证手机号、邮箱、身份证、银行卡

    1.手机号 + (BOOL) IsPhoneNumber:(NSString *)number { NSString *phoneRegex1=@"1[34578]([0-9]){9}&qu ...

  9. [题解]UVa 11082 Matrix Decompressing

    开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...

  10. flash中网页跳转总结

    浏览器中,程序同时跳转两个网页地址,第一个地址不会跳转,只会跳转第二个地址,如果第二个地址做延时,则第一个正常跳转,第二个地址会被拦截: 浏览器中,接口返回事件的函数中不能程序跳转网页地址. 这两条结 ...