|
30鱼币
祖父某一年写的纸中发现账单: 72只火鸡_679_美元 第一个和最后一个数字显然代表那些火鸡的总价格(这里用“_”表示),因为他们都消失了,现在无法辨认。问那两位数字是什么和一只火鸡的价钱是多少? 我们要写一个解决上述问题的一个通用版本的程序: N 只火鸡 $XYZ 火鸡的总数N是介于1和99,包括1和99。总价格总共有五位数,但是我们只可以看到在中间三位数。我们假设第一个数字不是是零,一只火鸡的价格是一个整数的美元,所有的火鸡成本相同。 给定N,X,Y,和Z,编写一个程序,猜测这两个褪色的数字和原始价格。如果有多个候选原价,输出最昂贵的一个。那么,程序是报告的是这两个褪色的数字和每只火鸡的最大价格。
输入输出格式
输入格式:
输入包含T测试案例。测试案例的输入文件的第一行的数量(t)是给定的。每个测试案例的第一行包含一个整数N(0<n<100),它代表的火鸡数量。在下面的行中,有三位十进制数字X,Y,和Z,中间用空格隔开,表示原价的_xyz_美元。
输出格式:
对于每个测试案例,你的程序必须做到以下几点。一个测试案例中,可以有一个以上的候选原始价格或者没有。在后面的测试案例中,你的程序要报告0。另外,如果有一个以上的候选原始价格,该程序是报告褪色的两位数和每只火鸡的最高价格。下面显示了样本的输入和输出三个测试案例。
输入输出样例:
样例输入1:
3
72
6 7 9
5
2 3 7
78
0 0 5
样例输出1:
3 2 511
9 5 18475
0
- #include <iostream>
- using namespace std;
- void CalcAndOutput(int N, int x, int y, int z)
- {
- if (x == 0 && y == 0 && z == 0)
- {
- printf_s("0\n");
- return;
- }
- int high = 9, low = 9;
- int price = 0;
- int unit = 0;
- for (int high = 9; high > 0; high--)
- {
- for (int low = 9; low >= 0; low--)
- {
- price = low + z * 10 + y * 100 + x * 1000 + high * 10000;
- if (price % N == 0)
- {
- printf_s("高位: %d 低位: %d 单价: %d", high, low, price / N);
- return;
- }
- }
- }
- printf_s("0\n");
- }
- void GetInput()
- {
- int N = 0;
- int x = 0, y = 0, z = 0;
- char c = 0;
- printf_s("请输入火鸡数量:");
- cin >> N;
- printf_s("请输入候选原始价格用空格隔开:");
-
- scanf_s("%d%*c%d%*c%d", &x, &y, &z);
- CalcAndOutput(N, x, y, z);
- }
- int main()
- {
- GetInput();
- return 0;
- }
复制代码
|
|