if(x%(i*i)==0)c++不对,需要每个x%(i*i)都等于0,才能将c加1。所以可以改成
if(x%(i*i)==0)break;
然后在该循环外加上c += (j==(n-i+1));
另外分离每个数的方法不好,每次求出d = 10^k,然后用b/d来分离,不如直接用除10的方法分离b,存入数组供以后使用。
int main()
{
int n, max, i, j, k, A[16];
scanf("%d", &n); //输入位数n
for(i=max=1; i<=n; i++) //10^n
max *= 10;
for(i=max/10,n=0; i
for(k=0,j=i; j; j/=10) //分离到数组A中
A[k++] = j;
for(j=0; j
n += (j==k); //累加
}
printf("%d", n);
return 0;
}
楼上说的在理