C语言每日一练——第86天:出售金鱼问题
C语言每日一练
2022年3月12日
文章目录
- 题目描述
- 问题分析
- 代码实现
- 运行结果
- 网上参考
题目描述
小明将养的一缸金鱼分5次出售:第1次卖出全部的一半加1/2条;第2次卖出余下的三分之一加1/3条;第3次卖出余下的四分之一加1/4条;第4次卖出余下的五分之一加1/5条;最后卖出余下的11条。试编程求出原来鱼缸中共有多少条鱼。
问题分析
假设当前金鱼数为y
,上一次卖鱼之前金鱼数为x
,卖鱼次数为i
(从1开始);根据题目,可以得到下面这个公式:
即
这是一个多项式,需要求出最开始的x
的值,使得公式运算到第4次时y=11
,在编程上,我们可以用穷举法,穷举第一次的x
值)。
代码实现
#include <stdio.h>int main()
{int sum = 0; //总金鱼数int i = 0;int flag = 0;double tmp = 0;for(sum = 11; sum <= 1000; sum++) //穷举范围11~1000{tmp = (double)sum;for(i = 1; i <= 4; i++){tmp = tmp - (tmp + 1) / (i + 1);}if(tmp < 11.000001 && tmp > 10.999999) //最后剩下11条(浮点数判断需要考虑精度问题){flag = 1; //找到匹配的结果break;}}if(flag)printf("金鱼总数为%d\n", sum);elseprintf("error\n");return 0;
}
运行结果
网上参考
原文链接:http://c.biancheng.net/cpp/html/3317.html
原文部分思路(优化部分)
#include<stdio.h>
int main()
{int i, j, x, flag=0; /*flag作为控制标志*//*从23开始试探,步长为2*/for( i=23; flag==0; i+=2 ){for( j=1,x=i; j<=4&&x>=11; j++ )if( (x+1) % (j+1) == 0) /*判断x+1是否能整除j+1*/x -= (x+1) / (j+1);else{x=0;break;}if(j==5 && x==11){printf("原来鱼缸中共有%d条金鱼。\n", i);flag = 1; /*求出结果,flag置1,退出试探*/}}return 0;
}
C语言每日一练——第86天:出售金鱼问题相关推荐
- 6 获取数组中最小值_C语言每日一练8——数组中最大值和最小值
题目: 利用指针函数,求某数组中的最大值和最小值. 实现代码: /* ================================================================= ...
- C语言每日一练——第85天:三色球问题
C语言每日一练 2022年3月8日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少 ...
- C语言每日一练——第73天:谁是窃贼问题
C语言每日一练 202年1月8日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 警察审问4名窃贼嫌疑犯.现在已知,这4人当中仅有一名是窃贼,还知道这4个人中的每个人要么是诚实的 ...
- C语言每日一练——第35天:打印菱形
C语言每日一练 2021年10月13日 题目描述 输入菱形的高度n(必须为奇数),即正中间星号的个数,打印出用星号组成的菱形 分析 要打印菱形,先要构想要打印的图形样子,就比如下图这种: 我们可以根据 ...
- C语言每日一练——第28天:要求输出国际象棋棋盘
C语言每日一练 2021年10月6日 题目描述 要求输出国际象棋棋盘 分析 先看看国际象棋的棋盘的长相: 可以看出,国际象棋棋盘呈正方形,里面包含8x8总共64个小方格,它们黑白相间.要想在控制台输出 ...
- C语言每日一练——第10天:求一个矩阵主对角线及副对角线元素之和
C语言每日一练 2021年9月18日 题目描述 求一个矩阵主对角线及副对角线元素之和 分析 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,矩阵是高等代数学中的常见工具,也常见于 ...
- C语言每日一练——第1天:字母大小写转换
C语言每日一练 2021年9月9日 本人C语言菜鸟,最近工作中频频出现C语言小错误,遂决定使用笨方法提高我的C语言水平,坚持每天一个C语言小练习,养成C语言手感,从此让编程成为习惯. 题目描述 从键盘 ...
- 【C语言每日一练——第1练:字母大小写转换】
C语言每日一练 2022年6月13日 题目描述 从键盘输入一个大写字母,要求改用小写字母输出 分析 从键盘输入可以使用scanf或getchar等函数. 大写字母是一个字符,字符类型数据在C语言中是以 ...
- C语言每日一练——第80天:换分币问题
C语言每日一练 2022年2月13日 文章目录 题目描述 问题分析 代码实现 运行结果 题目描述 将5元的人民币兑换成1元.5角和1角的硬币,共有多少种不同的兑换方法. 问题分析 列举3元1次方程 1 ...
最新文章
- 深度丨当AI遇见区块链,2018年的第一场火,还是第一场泡沫?
- web3.js(三)查询智能合约币数量(erc20)
- 洛谷 P1343 地震逃生
- Ubuntu 18.0安装教程
- 带线的无限级下拉树列表-完整示例篇
- shell 与 空格
- PCB相关的基础知识
- acwing3132. 食物(BZOJ3028)
- Java的getcelltype用法_java getCellType的替代方法
- springmvc resources 配置
- 【过程改进】10分钟进阶Nuget
- 基于ARM的车牌识别技术研究与实现
- 打开visio后屏幕会不停的抖动是怎么回事
- 【原创】技术员 Win10 PE 网络版启动工具 V6.2 兼容UEFI双启动
- Linux进程间通信-消息队列
- python3-曲线拟合(polyfit/polyval)
- ThinkPHP5.0 查询条件where()使用
- Python爬虫小项目——实现英语翻译功能(四)
- 链接服务器“(null)“的 OLE DB 访问接口 “SQLNCLI10“ 返回了消息 “客户端无法建立
- 【算法】搜索算法—盲目搜索和启发式搜索
热门文章
- python实验收获和反思_反思总结收获前行
- 计算机新代理大会优美句子,描写计算机教室的优美句子
- pin码忘了怎么办?Win11忘记pin码进不了系统?
- twitter全自动发推_我如何在5分钟内自动创建FreeCodeCampers的Twitter列表
- 如何在网页上显示腾讯QQ/MSN/旺旺在线洽谈
- java跟jsp数据交互的坑
- 查询学生表中姓“张”,“李”,“刘”的学生的情况。
- 蓝桥杯专题(一)《C语言》
- 0xC0000005: 读取位置 0x0000000000000030 时发生访问冲突的解决
- LLVM文档目录框架(索引用)