编程题 7-19 支票面额【PAT】

编程练习题目集目录

题目

  一个采购员去银行兑换一张 y y y f f f 分的支票,结果出纳员错给了 f f f y y y 分。采购员用去了 n n n 分之后才发觉有错,于是清点了余额尚有 2 y 2y 2y 2 f 2f 2f 分,问该支票面额是多少?

输入格式

  输入在一行中给出小于 100 100 100 的正整数 n n n

输出格式

  在一行中按格式 y . f y.f y.f 输出该支票的原始面额。如果无解,则输出 N o S o l u t i o n No Solution NoSolution

输入样例1

23

输出样例1

25.51

输入样例2

22

输出样例2

No Solution

题解

解题思路

  根据题目推导出关系式: f . y − 0. n = f 1. y 1 = 2 y . 2 f = 2 ∗ ( y . f ) f.y-0.n = f1.y1 = 2y.2f = 2*(y.f) f.y0.n=f1.y1=2y.2f=2(y.f) 200 ∗ y + 2 ∗ f + n = 100 ∗ f + y 200*y+2*f+n = 100*f+y 200y+2f+n=100f+y,化简之后为 98 ∗ f − 199 ∗ y = n 98*f-199*y=n 98f199y=n。使用 f o r for for 循环根据关系式用 i f if if 语句判断出条件,如果有就按照格式输出;如果没有输出 “ N o S o l u t i o n ” “No Solution” NoSolution 即可。

完整代码

#include<iostream>
using namespace std;

int main(void)
{
    
    
    int x, y, n, flag = 1;
    cout << "请输入一个小于 100 的正整数:";            // 提交时注释此行
    cin >> n;
    for (y = 0; y <= 100; y++)
    {
    
    
        for (x = 0; x <= 100; x++)
            if (98 * x == 199 * y + n)
            {
    
    
                flag = 0;
                cout << y << "." << x << endl;
            }
    }
    if (flag)
        cout << "No Solution" << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41918107/article/details/142982597