记录编号 |
259461 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Number |
最终得分 |
100 |
用户昵称 |
哒哒哒哒哒! |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.069 s |
提交时间 |
2016-05-09 17:12:58 |
内存使用 |
0.43 MiB |
显示代码纯文本
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<iostream>
#define maxn 30010
using namespace std;
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0' ||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
x=x*10+ch-48;
ch=getchar();
}
return x*f;
}
int a[maxn],b[maxn],l1=0,l2=0,cnt,r1=0,r2=0,len;
string s;
void get(int x){
char ch[12];
sprintf(ch,"%d",x);
for(int i=0;ch[i]!='\0';i++) s+=ch[i];
}
void dp(int l,int n){
if(n==0) return;
int pos=l;
for(int i=l;i<=len-n;i++){
if(s[pos]<s[i]) pos=i;
if(s[pos]=='9') break;
}
putchar(s[pos]);
dp(pos+1,n-1);
}
int main()
{
freopen("numbera.in","r",stdin);
freopen("numbera.out","w",stdout);
int k=read(),m=read();
a[r1++]=1;
b[r2++]=1;
while(cnt<k){
int x=a[l1],y=b[l2];
int xx=0;
if(x==y)xx=x,l1++,l2++;
else if(x>y) xx=y,l2++;
else xx=x,l1++;
a[r1++]=xx*2+1;
b[r2++]=xx*4+5;
get(xx);
cnt++;
}
cout<<s<<endl;
len=s.length();
m=len-m;
dp(0,m);
fclose(stdin);
fclose(stdout);
return 0;
}