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天:出售金鱼问题相关推荐

  1. 6 获取数组中最小值_C语言每日一练8——数组中最大值和最小值

    题目: 利用指针函数,求某数组中的最大值和最小值. 实现代码: /* ================================================================= ...

  2. C语言每日一练——第85天:三色球问题

    C语言每日一练 2022年3月8日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少 ...

  3. C语言每日一练——第73天:谁是窃贼问题

    C语言每日一练 202年1月8日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 警察审问4名窃贼嫌疑犯.现在已知,这4人当中仅有一名是窃贼,还知道这4个人中的每个人要么是诚实的 ...

  4. C语言每日一练——第35天:打印菱形

    C语言每日一练 2021年10月13日 题目描述 输入菱形的高度n(必须为奇数),即正中间星号的个数,打印出用星号组成的菱形 分析 要打印菱形,先要构想要打印的图形样子,就比如下图这种: 我们可以根据 ...

  5. C语言每日一练——第28天:要求输出国际象棋棋盘

    C语言每日一练 2021年10月6日 题目描述 要求输出国际象棋棋盘 分析 先看看国际象棋的棋盘的长相: 可以看出,国际象棋棋盘呈正方形,里面包含8x8总共64个小方格,它们黑白相间.要想在控制台输出 ...

  6. C语言每日一练——第10天:求一个矩阵主对角线及副对角线元素之和

    C语言每日一练 2021年9月18日 题目描述 求一个矩阵主对角线及副对角线元素之和 分析 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,矩阵是高等代数学中的常见工具,也常见于 ...

  7. C语言每日一练——第1天:字母大小写转换

    C语言每日一练 2021年9月9日 本人C语言菜鸟,最近工作中频频出现C语言小错误,遂决定使用笨方法提高我的C语言水平,坚持每天一个C语言小练习,养成C语言手感,从此让编程成为习惯. 题目描述 从键盘 ...

  8. 【C语言每日一练——第1练:字母大小写转换】

    C语言每日一练 2022年6月13日 题目描述 从键盘输入一个大写字母,要求改用小写字母输出 分析 从键盘输入可以使用scanf或getchar等函数. 大写字母是一个字符,字符类型数据在C语言中是以 ...

  9. C语言每日一练——第80天:换分币问题

    C语言每日一练 2022年2月13日 文章目录 题目描述 问题分析 代码实现 运行结果 题目描述 将5元的人民币兑换成1元.5角和1角的硬币,共有多少种不同的兑换方法. 问题分析 列举3元1次方程 1 ...

最新文章

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

热门文章

  1. 如何才能让你的简历被谷歌相中
  2. mysql之PK和UK
  3. DX11六边形绘制的两种方法以及xjun博客的学习感悟
  4. 小鸡吃米java_小班语言活动:小鸡吃米
  5. 最接近的数 牛客网 程序员面试金典 C++ Python
  6. Maple神奇的convert命令
  7. 优酷播放器与layer弹出层(别的弹出层未测试)遮挡问题
  8. dig的现在分词_dig的用法总结大全
  9. PoPo数据可视化周刊第一期
  10. 全场景多维度,高效数字智能化,大疆T40助力农业科技化发展