题目
一个采购员去银行兑换一张 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.y−0.n=f1.y1=2y.2f=2∗(y.f), 200 ∗ y + 2 ∗ f + n = 100 ∗ f + y 200*y+2*f+n = 100*f+y 200∗y+2∗f+n=100∗f+y,化简之后为 98 ∗ f − 199 ∗ y = n 98*f-199*y=n 98∗f−199∗y=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;
}