SRETAN
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的更多相关文章
随机推荐
- Begin :SWIFT 基本语法
国内介绍IOS书籍大多是很陈旧的代码, 2014年Apple发布了Swift语言, 毫无疑问Swift是一个强大的语言, 但是纵观国内的IOS现状,大家大多已经习惯了了OC, OC能解决的问题谁会想到 ...
- Qt事件过滤器Event Filter
事件过滤器针对一类或者多种不同类型的对象,定义了重写操作. 简单的说: 1.先对UI对象注册Event Filter 例如: ui->drawBtn->installEventFil ...
- JS中this的指向问题
JS中this的定义:this对象是在运行时基于函数的执行环境绑定的(通俗点来说就是:this代表当前函数属于哪个对象). this一般情况下都代表的是global对象,在浏览器中就是window对象 ...
- NLua - 基于Lua的C#脚本引擎
Nlua NLua is the bind between Lua world and the .NET world. NLua is a fork of project LuaInterface ( ...
- LDAP与Samba
默认的Samba服务器支持本地系统用户(smbpasswd添加后)访问Samba资源,不支持OpenLDAP服务器账号访问Samba共享资源 目的:配置完后,OpenLDAP每新增一个用户,就自动支持 ...
- CentOS6.5 vsftpd 配置
CentOS6.5vsftpd 配置文件为/etc/vsftpd/vsftpd.conf 安装完软件后:1.默认匿名用户能够登陆,且限制在/pub目录内,2.本地用户可以登陆但因SElinux而无法登 ...
- js实现一些跨浏览器的事件方法
用JavaScript实现事件的绑定,移除,以及一些常用的事件属性的获取,时常要考虑到在不同浏览器下的兼容性,下面给出了一个跨浏览器的事件对象: var EventUtil = { on: funct ...
- Ajax调用SpringMVC ModelAndView 无返回情况
在项目中使用Ajax的时候,success中返回的data一直都是null,也没有报错.在确定Ajax语法没有错误,也没有牵扯跨域问题后,用排除法挨着删除代码,发现是因为Spring MVC会自动把方 ...
- setValue和setObject的区别
在NSMutableDictionary的方法中有setValue forKey与setObject forKey,它们都可以用来设置某一个key值对应的value 1,setValue: forKe ...
- Nginx:针对IPv4的内核参数优化
这里提及的参数是和IPv4网络有关的linux内核参数,我们可以将这些内核参数的值追加到linux系统的/etc/sysctl.conf文件中,然后使用如下命令使修改生效: [root@bogon ~ ...