我要飞=_= 2022-04-11 09:52 采纳率: 70.6%
浏览 80
已结题

C语言PTA练习,具体内容见内

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

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

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

输入样例1:
23
输出样例1:
25.51
输入样例2:
22
输出样例2:
No Solution

我是属于直接看不懂题目,后来搜了下答案,别人的代码如下
#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int f,y;
    int signal=0;
    for(y=0; y<100; y++)
        for(f=y; f<100; f++)
            if(98*f==199*y+n) {
                signal=1;
                printf("%d.%d\n",y,f);
            }
    if(signal==0) {
        printf("No Solution");
    }
    return 0;
}

我很不理解100哪来的,我尝试着换成1000,好像也没太大问题?疑惑
我只能得出98f==199y+n这个方程式,其他一律不知

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-04-11 09:59
    关注

    方程是98 * f=199 * y+n
    双循环是穷举法,因为这个方程有两个变量,没有办法直接求出结果,所以将f和y的所有可能值全部运行一遍,满足方程的就是解
    因为y和f都可以当成分的值,说明y和f肯定在100以内。改成1000没问题是因为大于100肯定是不会成立的,只是增加循环次数而已

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)