C语言90分求助
查看原帖
C语言90分求助
1102364
YuuSamm楼主2023/11/29 22:42

最后一个数据错误

#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;
}
2023/11/29 22:42
加载中...