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 ...
最新文章
- CentOS7 RedHat7 添加静态路由方法
- 什么是CPU的虚拟化技术?优势又是什么
- python计算每月工资-[Python] 2018新税法下工资计算
- linux I/O--I/O多路复用--select总结(三)
- 一个PHP程序的“怪问题”
- [uva]AncientMessages象形文字识别 (dfs求连通块)
- sqlserver compact sdf, sqlite 数据库 在net中相对路径设置方法 - 摘自网络
- 一条数据的漫游 -- X-Engine SIGMOD Paper Introduction
- 如何设计不宕机的 Redis 高可用服务?
- Java关键字finally
- golang web服务器_使用Go制作自己的Web服务器:快速指南
- [poj3252]Round Numbers_数位dp
- PHP的日期时间函数date()
- STM32固件库包的下载与安装
- 算法小结——KM算法
- android 有序map,给HashMap排序,使之成为有序Map
- google地图android版,google地图
- Arduino Uno 实验11——MQ-3酒精乙醇传感器模块
- 【虚拟仿真】Unity3D中拆分模型教程(多种类型模型拆分)
- JAVA范例 十三)多线程编程(3)