一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?
输入格式:
输入在一行中给出小于100的正整数n。
输出格式:
在一行中按格式y.f输出该支票的原始面额。如果无解,则输出No Solution。
输入样例1:
23
输出样例1:
25.51
输入样例2:
22
输出样例2:
No Solution
#include <iostream>
using namespace std;
int main()
{
int y, f, n;
cin >> n;
for(y = 0; y < 100; y++)
{
for (f = 0; f < 100; f++)
{
if (199 * y == 98 * f - n)
{
printf("%d.%d", y, f);
return 0; //退出程序
}
}
}
cout << "No Solution";
system("pause");
return 0;
}
由题意可得
公式:100f+y=200y+2f+n;
利用计算机的特性设置两个循环,遍历0-99每一个数,看是否满足上述方程,若满足,对应的数即为所求。
小结:
二元一次方程对我们来说是难以求解的,计算机快速试解可以达到效果。