在祖父的文件中发现了一张帐单。72只火鸡$?679?显然代表这些火鸡总价的数字的第一位和最后一位在这里被空白(表示为?)取代,因为它们褪色且难以辨认。
两个褪色的数字是多少?一只火鸡的价格是多少?我们想编写一个程序来解决上述问题的一般版本。
N只火鸡$?XYZ?火鸡的总数N在1到99只之间,包括两者。
总价最初由五位数组成,但我们只能看到在中间的三位数。
我们假设第一个数字是非零的,一只火鸡的价格是整数美元,所有火鸡的价格都是相同的。
给定N、X、Y和Z,编写一个程序来猜测两个褪色的数字和原始价格。
如果原始价格有多个候选者,则输出应该是最昂贵的一个。
也就是说,该计划将报告火鸡的两个褪色数字和每只火鸡的最高价格。
输入文件的第一行包含一个整数N(0<N<100),表示火鸡的数量。在下面的行中,有原始价格$?XYZ?的三个十进制数字X、Y和Z,用空格分隔。
对于每种情况,输出两个褪色的数字和火鸡每只火鸡的最高价格。
输入:
72
6 7 9
5
2 3 7
78
0 0 5
输出:
3 2 511
9 5 18475
0
#define _CRT_SECURE_NO_WARNINGS
#include
using namespace std;
#include
//数组变量本身存储的就是一串地址
//所以要返回数组 其实就是返回一个地址
int* Huoji(int n, int num2, int num3, int num4) {
//使用指针定义数组
int arr[3];
int price;//总价格 用于遍历
int maxprice = 0;//用于记录最高的价格
int num1, num5;
//循环遍历所有情况 i表示num1 j表示num5
for (int i = 1; i <= 9; i++) {
for (int j = 0; j <= 9; j++) {
price = i * 10000 + num2 * 1000 + num3 * 100 + num4 * 10 + j;
//如果可以整除 就说明可行
//但是还要选择最高的
if (price % n == 0) {
//判断是否是当前最高价格
if (price >= maxprice) {
maxprice = price;
num1 = i;
num5 = j;
}
}
}
}
//如果没有符合条件的 那么maxprice还是0
if (maxprice == 0) {
arr[0] = 0;
return arr;
}
arr[0] = num1;
arr[1] = num5;
arr[2] = maxprice / n;
return arr;
}
int main() {
//如何接受用户输入
//又是一个统一输入 统一输出的题目
//先写一个输入两行输出一行的
//文件的末尾自己就有EOF这个指示符
/*
备注
这里最终经过测试 还是一组一组的来的
注意区分 是一组一组来 还是等待所有输入完成后再统一输出
*/
/*
输入样式
72
6 7 9
*/
/*
输出样式
3 2 511
*/
//还是想到先写一个函数
int n;//接收火鸡个数
int num2, num3, num4;//接收中间的位数
scanf("%d %d %d %d", &n, &num2, &num3, &num4);
int* arr = Huoji(n, num2, num3, num4);
if (arr[0] != 0) {
printf("%d %d %d\n", arr[0], arr[1], arr[2]);
}
else {
printf("%d", arr[0]);
}
return 0;
}