最后一个数据错误
#include <stdio.h>
#include <math.h>
int main() {
int a, n, k, m = 1, A;
scanf("%d %d %d", &n, &a, &k);
A = a;
int wei[7];
while (A != 0) {
wei[m] = A % 10;
m++;
A /= 10;
}//把数字按位存数组
if (m == n) {
wei[m] = 0;
}//补前面的“0”
for (int i = 0; i < pow(10, n); i++) {//遍历
int I = i;
int mnr[7] = { 0 };
int exm[7] = { 0 };
for (int j = 1; j <= n; j++) {
mnr[j] = I % 10;
I /= 10;
}//按位存数组
for (int j = 1; j <= n; j++) {
exm[j] = abs(mnr[j] - wei[j]);
}//算该数与所给数每一位的差
int sum1 = 0, sum2 = 0;
for (int j = 1; j <= n; j++) {
if (exm[j] == 1 || (exm[j] == 9 && ( wei[j] == 0 || wei[j] == 9 ))) {
sum1++;
}//差是1或9(原数该位是9或0的情况下)符合
if (exm[j] == 0) {
sum2++;
}//其余位必须全是0
}
if (sum1 <= k && sum1 + sum2 == n) {
printf("%d\n", i);
}//检查是否符合
}
return 0;
}