PTA基础编程题目集 7-19支票面额(C++语言实现)

PTA基础编程题目集 7-19支票面额(C++语言实现)
摘要本文是PTA编程题支票面额的题解涵盖题目描述、输入输出格式及C语言实现展示枚举法求解不定方程算法。题目描述一个采购员去银行兑换一张y元f分的支票结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错于是清点了余额尚有2y元2f分问该支票面额是多少输入格式输入在一行中给出小于100的正整数n。输出格式在一行中按格式y.f输出该支票的原始面额。如果无解则输出No Solution。输入样例2322输出样例25.51No Solution解题思路核心问题分析根据题意建立数学方程求解原始支票面额y元和f分。关键在于将金额单位统一为分后根据错兑、用去、剩余的关系建立不定方程。算法原理说明将所有金额转换为分单位原始支票为100yf分错兑后为100fy分用去n分后剩余200y2f分。根据题意列方程100fy-n 200y2f化简得98f-199y n。由于y和f均为0~99的整数元与分的范围使用双重循环枚举所有可能的y和f验证是否满足方程即可。具体计算步骤读取用去的分数n外层循环枚举y从0到99元数内层循环枚举f从0到99分数验证方程98f-199yn是否成立若成立则输出y.f标记找到解退出循环枚举结束未找到解则输出No Solution代码流程说明引入头文件与命名空间第1-2行引入iostream头文件使用std命名空间。变量声明与输入第5-6行定义用去的分数n、元数y、分数f、找到解标记found初始0读取输入n。双重循环枚举求解第9-20行外层for循环y从0到99枚举所有可能的元数内层for循环f从0到99枚举所有可能的分数条件判断98f-199yn验证是否满足不定方程若满足输出y.f格式结果found置1break内层循环外层循环判断found是否为1若找到则break外层循环无解处理与返回第22-26行若found仍为0则输出No Solution返回0表示程序正常结束。代码流程图否是否是否是是否是否开始声明变量n,y,f,found0读取输入ny0y100?found0?f0f100?y98*f-199*y n?f输出y.ffound1break内层循环found1?break外层循环输出No Solution返回0,结束解题流程图是否是否否是理解题意统一单位为分建立方程: 错兑-用去剩余化简: 98f-199yn输入n值枚举y从0到99枚举完y?输出No Solution枚举f从0到99枚举完f?下一个y98f-199yn?下一个f输出y.f代码部分实现#includeiostreamusingnamespacestd;intmain(void){intn,y,f,found0;// n为用去的分数y为元数f为分数found标记是否找到解cinn;// 读取用去的分数// 枚举所有可能的元数y和分数ffor(y0;y100;y){// 枚举元数y0-99for(f0;f100;f){// 枚举分数f0-99// 根据题意列方程98*f - 199*y n// 原始支票为y元f分错兑为f元y分用去n分后剩余2y元2f分if(98*f-199*yn){couty.fendl;// 输出支票面额found1;// 标记已找到解break;// 跳出内层循环}}if(found)break;// 找到解后跳出外层循环}if(!found){// 未找到解coutNo Solutionendl;// 输出无解提示}return0;}

最新新闻

日新闻

周新闻

月新闻