原来如此
by МiсDZ @ 2017-12-05 17:10:47
```cpp
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=(1<<15)+3;
const int inf=0x3f3f3f3fll;
typedef long long ll;
#define Fast register
#define swap(x,y) x^=y,y^=x,x^=y
#define min(a,b) a>b?b:a
#define max(a,b) a<b?b:a
inline char getc()
{
static char buf[1<<14],*p1=buf,*p2=buf;
return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,1<<14,stdin),p1==p2)?EOF:*p1++;
}
inline ll read()
{
ll data=0,w=1;
char ch=0;
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getc();
if(ch=='-') w=-1,ch=getc();
while(ch>='0'&&ch<='9') data=data*10+ch-48,ch=getc();
return data*w;
}
inline int get_num(int i)
{
int ans=1.0*log(i)/log(10);
return ans+1;
}
ll lwd[maxn],ss[maxn],t,data,top,maxx=0;//lwd[i]存储实际的长度
inline void ak()
{
printf("%d",maxx);
for(Fast int i=1;i<maxn;i++)
{
lwd[i]=lwd[i-1]+i;
int k=get_num(i);
k--;
lwd[i]+=k*lwd[i]-pow(10,k+1);
while(k>1)
{
lwd[i]+=(pow(10,k+1)-pow(10,k))*k;
k--;
}
if(lwd[i]>maxn) maxx=i;
return;
}
printf("%d",maxx);
for(Fast int i=1;i<=maxx;i++)
printf("%d ",lwd[i]);
return;
}
int main()
{
ak();
int t=read();
//t=read();
//while(t--)
{
//data=read();
//int temp=lower_bound(ss+1,ss+1+maxn,data)-ss,ans;
//printf("%d\n",temp);
//if(ss[temp]>data) temp--;
//printf("%d\n",temp);
//data%=ss[temp];
//ans=(!data)?temp:data;
//printf("%d\n",ans);
}
//return 0;
}
```
by Explorer_CYC @ 2018-04-09 22:00:58