题目链接:7-19 支票面额
一. 题目
1. 题目
2. 输入输出样例
3. 限制
二、代码
1.公式换算
unsigned int y, f, n;
f * 100 + y - n = 2 * y * 100 + 2 * f;
98 * f + y - n = 200 * y;
98 * f - n = 199 * y;
199 * y = 98 * f - n;
y = (98 * f - n) / 199;
// 在本题条件下:
// (98 * f - n) >= 0
// (98 * f - n) 整除 199
2. 代码实现
#include <stdio.h>
int main(void) {
unsigned int y, f, n;
int temp;
if (scanf("%d", &n) != 1) {
return -1;
}
// 本题解唯一,对f进行穷举,找到合适的就退出循环
for (f = 0; f < 100; f++) {
temp = 98 * f - n; // 公式:y = (98 * f - n) / 199
if (temp < 0 || temp % 199 != 0) {
continue; // 不满足 (98 * f - n) >= 0 或 整除199
} else {
y = temp / 199;
temp = 0; // 标记存在解决方案
break;
}
}
if (temp != 0) {
printf ("No Solution");
} else {
// 不能写成 printf ("%d.%02d", y, f);
printf ("%d.%d", y, f);
}
return 0;
}
3. 提交结果
三、易错点
余额尚有2y元2f分
:不代表f < 50格式y.f输出
:不是正常的金额格式,比如y=1且f=1时,输出为1.1而不是1.01