zzzyf 发表于 2021-4-17 19:55:08

c++题在线等,急!!

祖父某一年写的纸中发现账单: 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

yuxijian2020 发表于 2021-4-17 19:55:09

#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;
}
页: [1]
查看完整版本: c++题在线等,急!!