基础编程题目集 ——7-19 支票面额

23 篇文章 1 订阅

1 题目要求

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

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

输出格式:
在一行中按格式y.f输出该支票的原始面额。如果无解,则输出No Solution

2 样例

输入样例1:
23

输出样例1:
25.51

输入样例2:
22
输出样例2:
No Solution

3 分析

根据题干描述,可以列出如下的式子
f.y-0.n=2(y.f)(1)
左右两边同时乘以100(因为 分币的范围是[1,100),两位数)以消去小数
100f+y-n=200y+2*f(2)
合并同类项
98f-199y=n(3)

一开始想分类讨论,根据(1)分别讨论左边减法需要借位,右边加法需要进位,分为4种情况,然后分别构建二元一次方程组。结果没过——还有待讨论

上网查别人怎么做的,又是只给代码,=(可能觉得题太简单了?)然后自己又想了一下,是通过两个循环(y,f)来表示(3)这个二元一次方程

4 代码

第一版

找不着了…………………………

第二版

# include <stdio.h>

int main(void) {
	int n=0, y=0, f=0;
	int isGet=0;
	
	scanf ("%d", &n);
	
	for(int i=0; i<100; i++) {
		for (int j=0; j<=100; j++) {
			if (n == 98*i-199*j) {
				f = i;
				y = j;
				isGet = 1;
				break;
			}
		}
		if (1 == isGet) break;
	}
	
	if (0 == isGet) {
		printf("No Solution");
	} else {
		printf("%d.%d", y, f);
	}
	
	return 0;
}

5 总结

二元一次方程通过双循环求解
如何根据内循环条件跳出外循环

java比c占内存

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值