有歧义的号码
#include<stdio.h> #include<string.h> #include<stdlib.h> int cmp(const void * x, const void * y) { //x < y return (*((int *)(x))) > (*((int *)(y))) ? 1 : -1; } int a[10], b[10]; const int r[10] = { 0, 1, 2, -1, -1, 5, 9, -1, 8, 6 }; int main(){ #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); #endif int n, d, x, y; scanf("%d", &n); for (int i = 1; i <= n; i++){ x = i, d = 0; if (x % 10 == 0) continue; bool flag = true; while (x){ a[d++] = x % 10; x /= 10; } for (int j = 0; j < d; j++){ b[j] = r[a[d - j - 1]]; if (b[j] == -1) flag = false; } y = 0; for (int j = d - 1; j >= 0; j--){ y = y * 10 + b[j]; } if (y>n || y == i) flag = false; if (flag) printf("%d\n", i); } return 0; }