电脑换过,重启过,代码重构过,就是无法进入下一步,是哪一个 用的dev-c++ 6.3
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int x,y,swi;
ll f[20][10][20],ans[2][10];
void cal()
{
f[1][0][0]=9;
for (int i=1;i<=9;i++)
{
f[1][i][0]=8;
f[1][i][1]=1;
}
for (int i=2;i<=15;i++)
{
for (int j=0;j<=9;j++)
{
f[i][j][0]=f[i-1][j][0]*9;
for (int k=1;k<=i;k++)
f[i][j][k]=f[i-1][j][k]*9+f[i-1][j][k-1];
}
}
}
void doit(int a)
{
int p[33],t=0;
memset(p,0,sizeof(p));
while(a)
{
p[++t]=a%10;
a/=10;
}
for (int i=1;i<t;i++)
{
for (int j=0;j<=9;j++)
{
for (int k=1;k<=i;k++)
ans[swi][j]+=f[i][j][k]*k;
}
}
for (int i=t;i>=1;i--)
{
for (int j=0;j<=9;j++)
{
for (int k=0;k<=i;k++)
{
ans[swi][j]+=f[i-1][j][k]*k*(p[i]-(t==i&&p[i]==1));
// for (int q=p[i]-1;q>=0;q--)
// ans[swi][q]+=f[i-1][j][k];
for (int q=t;q>i;q--)
ans[swi][p[q]]+=f[i-1][j][k]*p[i];
}
}
}
swi=0;
}
int main()
{
cal();
scanf("%d %d",&x,&y);
swi=1;
doit(y);
doit(x-1);
for (int i=0;i<=9;i++)
{
ll res=ans[1][i]-ans[0][i];
printf("%lld ",res);
}
}