机试准备第4天
第一题是水仙花数,模拟的过程不难,主要难在输出形式的控制上。
#include <stdio.h>
using namespace std;
int main(){
int a,b;
while(1) {
scanf("%d %d", &a, &b);
if(a==0&&b==0) break;
int count = 0;
for(int i = a; i <= b;i++){
int gewei, shiwei, baiwei;
gewei = i%10;
shiwei = ((i-gewei)/10)%10;
baiwei = i/100;
if(gewei*gewei*gewei + shiwei*shiwei*shiwei + baiwei*baiwei*baiwei == i){
printf("%d ", i);
count++;
}
}
if(count==0) printf("no\n");
else printf("\n");
}
return 0;
}
第二题是old bill,全是洋文,没看懂。。字符流的输入用EOF判定。
#include <stdio.h>
using namespace std;
int main() {
int N, X, Y, Z;
int total;
while (scanf("%d %d %d %d", &N, &X, &Y, &Z) != EOF) {
int flag = 0;
for (int a = 9; a >= 1; a--) {
for (int b = 9; b >= 0; b--) {
total = a * 10000 + X * 1000 + Y * 100 + Z * 10 + b;
if (total % N == 0) {
printf("%d %d %d\n", a, b, total / N);
flag = 1;
}
if (flag == 1) break;
}
if (flag == 1) break;
}
if (flag == 0) printf("0\n");
}
}
第三题是xxx定律,简单模拟。
#include <stdio.h>
using namespace std;
int main() {
int a;
int count = 0;
while (scanf("%d", &a) != EOF) {
while (a != 1) {
if (a % 2 == 1) {
a = (3 * a + 1) / 2;
} else {
a = a / 2;
}
count++;
}
printf("%d\n", count);
count = 0;
}
return 0;
}