王道机试指南2.1枚举

例题2.1 abc(清华大学复试上机题)

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
for (int i = 0; i < 10; i++){
    for ( int j = 0; j < 10; j++){
        for(int k = 0; k < 10; k++){
            int m = i * 100 + j * 10 + k;
            int n = j * 100 + k * 10 + k;
            if(m + n == 532){
                printf("%d %d %d\n",i, j, k);
            }
        }
    }
}
}

例题2.2 反序数(清华大学复试上机题)

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
    for(int i = 1000; i <= 9999; i++){
        int a = i / 1000;
        int b = (i - 1000 * a) / 100;
        int c = (i - 1000 * a - b * 10) / 10;
        int d = (i - 1000 * a - b * 100 - c * 10);
        int m = d * 1000 + c * 100 + b * 10 + a;
        if( i * 9 == m) printf("%d \n", i);
    }
}  

例题2.3 对称平方数1(清华大学复试上机题)

#include<iostream>
#include<cstdio>
 using namespace std;
int reverse( int x){
    int revx = 0;
    while(x != 0){
        revx *= 10;
        revx += x % 10;
        x /= 10;
    }
    return revx;
}
 int main(){
     for(int i = 0; i <= 256; i++){
         int m = i * i;
         int n = reverse(m);
         if(m == n) printf("%d\n", i);
     }
 }  


习题2.1 与7无关的数(北京大学复试上机题)

#include <iostream>
#include <cstdio>
using namespace std;

bool is_relate_7(int m){
    if(m % 7 == 0) return true;
    while(m != 0){
        if(m % 10 == 7) return true;
        m /= 10;
    }
    return false;
}
int main(){
    int n, sum = 0;
    scanf("%d", &n);
    for(int i = 0; i <= n; i++){
        if(!is_relate_7(i)){
            sum += i * i;
        }
    }
    printf("%d", sum);
    return 0;
}  

习题2.2 百鸡问题(哈尔滨工业大学复试上机)

#include<iostream>
#include<cstdio>
using namespace std;

int main(){
    int n; 
    scanf("%d", &n);
    for(int i = 0; i <= 100; i++){
        for(int j = 0; j <= 100; j++){
            for(int k = 0; k <= 100; k++){ 
                if(n * 3 >= 15 * i + 9 * j + k && i + j + k == 100){
                    printf("x = %d,y = %d,z = %d\n", i, j, k);
                } 
            }
        }
    }
    return 0;
}  

习题2.3 Old bill(上海交通大学复试上机)

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    int n, x, y, z;
    scanf("%d", &n);
    scanf("%d %d %d", &x, &y, &z);
    int i, flag = 0;
    for(i = 99999; i >= 10000; i--){
        if(i % n == 0 && (i % 10000) / 10 == 100 * x + 10 * y + z){
            flag = 1;
            break;
        }
    }
    if(flag == 1){
        printf("%d %d %d\n", i / 10000, i %10, i / n);
    }
    else printf("0\n");
    return 0;
}