王道机试指南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;
}