我的思路 1,分别求出六位数每个位数为x是的数字个数(要求每个数字小于m,可以重复) 2,对于假定的某一位,以该位为分界讨论该位前面可不可以有数字和该位后面是不是可以占满即后面的位全为9具体如代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,x;
scanf("%d%d",&m,&x);
int breakk;int b[7]={1,10,100,1000,10000,100000,1000000};int A=0;
int i;
for(i=6;i>0;i--)
{
int j;
breakk=((b[i]+x*b[i-1])<=m);
if(breakk)
{
for( j=1;(j*b[i]+x*b[i-1])<=m&&((j+1)*b[i]+x*b[i-1]>m);j++);
A+=j*b[i]+x*b[i-1];
int q=0;
for(int p=1;p<i;p++)q+=9*b[i-1];
if(A+q>=m)A+=q;else {for(j=q;A+j<=m;j--);A+=j;}
}
else
{
int q=0;
for(int p=1;p<i;p++)q+=9*b[i-1];
if(x*b[i-1]+q>=m)A+=q+b[i];else {for(j=q;A+j<=m;j--);A+=j+b[i];}
}
}
printf("%d",A);
}