求助调试
  • 板块学术版
  • 楼主Themooncake
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/8/5 10:19
  • 上次更新2023/10/27 16:56:36
查看原帖
求助调试
516353
Themooncake楼主2022/8/5 10:19

电脑换过,重启过,代码重构过,就是无法进入下一步,是哪一个 用的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);
	}
}


2022/8/5 10:19
加载中...