#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int c[20],a[200];
int main()
{
int i,p,j,x,y,m,n,s,flag;
while(scanf("%d%d",&x,&y)!=EOF)
{
memset(c,0,sizeof(c));
for(i=2;i<=x;i++)
{
flag=1;
p=10;
memset(a,0,sizeof(a));
s=1;
while(flag)
{
m=p/i;
n=p%i;
a[s++]=p;
if(n==0)
{
c[m]++;
flag=0;
break;
}
else
{
c[m]++;
p=n*10;
for(j=1;j<s;j++)
{
if(a[j]==p)
{
flag=0;
break;
}
}
}
}
}
printf("%d\n",c[y]);
}
return 0;
}
算法老师留的作业题,是加了星号的,确实有点难度,wa了3次,第四次才AC的,题意挺好理解的,就是求一个数出现的次数,难点就在表示出循环体,我是用被除数判断的,如果重复出现了被除数,那就证明循环体出现了。用来记录数字出现的次数我用了一个数组来表示,比如说c[m]++就说明m出现了,c[m]里存的就是m出现的次数,用的变量比较多,而且是随意定义的,可能看不下去,不太好理解
放代码