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的更多相关文章
随机推荐
- 博客代码:iframe—网页中嵌入其他网页
iframe 是一个可以把另外一个网页嵌入到一个网页里的代码,非常有用.对于一个内容不错的网页,要方便地把它搬到自己的博客里,用这个代码最合适.而对于在新浪博客里不支持的一些网页效果和代码,可先把他们 ...
- cef3 获得js 返回值, 以及js 指挥delphi 函数的 总结参考
cef3 如何加载 本地html 文件. 请教老师[吐槽]常忘<run_fan@qq.com> 22:21:45@lazarus 下载cef3中的范例中就有 [吐槽]常忘< ...
- 关于js中的for(var in)遍历属性报错问题
之前遇到过这个问题,但是没找到问题的所在,将for(var i in array){} 改成了for(var i ;i<array.length;i++)循环,但是今天又遇到了,mark一下错 ...
- CentOS6.5源码安装python3.5.2
前提: 1.实现自动补全需要安装模块 readline-devel (yum install -y readline-devel) 2.实现支持SSL协议需安装模块 openssl-devel (yu ...
- One or more types required to compile a dynamic expression cannot be found.
This is because dynamic keyword is a new C# keyword. So we need to import Microsoft.CSharp.dll. Here ...
- 修改maven默认的JDK编译版本
1.全局模式(settings.xml) <profiles> <profile> <id>jdk-1.8</id> <activation> ...
- 初步理解JNDI
今天初步学习了jndi的基本原理,主要是 学习了收藏中的一篇博文,讲的很好,现在记录一下自己的理解. 其实jndi就和jdbc很相似, 我们希望通过相同的jdbc api来访问不同的数据库,就必须提供 ...
- WPF触发器的使用
WPF中定义了五个触发器类:Trigger.MultiTrigger.DataTrigger.multiDataTrigger.EventTrigger.下面我来介绍一下怎么使用这几个触发器的使用方法 ...
- NPOI支持excel2003和excel2007
IWorkbook wk = null; if (filePath.ToLower() == ".xls") { wk = new HSSFWorkbook(fs); } else ...
- 关于CMFCPropertyGridFontProperty的赋值问题
CMFCPropertyGridFontProperty是派生于CMFCPropertyGridProperty类的用于字体设置的类.它可以设置字体的名称.大小.粗细等各项参数.但是类并不提供用于初始 ...