鱼C论坛

 找回密码
 立即注册
查看: 1936|回复: 1

[已解决]c++题在线等,急!!

[复制链接]
发表于 2021-4-17 19:55:08 | 显示全部楼层 |阅读模式
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
最佳答案
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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表