带分数计算程序思路

思路一

1.  将带分数用正则表达式转换成整数+一个组合数的形式。 例如:   1+3*2^2/3-2 转换成  1+3*(2+2/3)-2

2.  直接把结果算出来

3.  将结果的小数部分转换成分数,也就是两个整数比的形式  例如 1.23423423  提取小数部分 0.23423423 后, 设计算法找出这2个整数。

4.  最简单的算法是双重循环, for(i=0;i<10000;i++)for(j=0;j<100000;j++) ..... 但是这样复杂度太高,  可以用每一次内循环的结果,比大小后,确定下一次内循环的范围。

例如 0.23434432 <1/2  则范围在 0/2 - 1/2   而1/2 < 2/3  分母循环到3的时候, 分子只需要遍历 1/3 比大小后确定范围在  0 - 1/3    依次类推 接下来遍历 1/4  确定范围在 0 -1/4  .....  1/5 2/5 ......  这样可以将O(N^2)的复杂度降低到近似于O(N)。

缺点:  无法确定外循环要循环多少次才能找到结果, 结果可能不精确。

优点:  设计很简单

思路二:

1. 将加减乘除的操作全部封装,操作数可以为整数也可以是分数,对应4种组合  例如 1/2+1  ->  3/2   1/4 + 1/6 -> 10/24

2. 将原表达式转换成后缀表达式,便于计算

4. 用栈的模型计算

3. 计算后的结果先去掉整数部分,然后约分,设定一个大概的范围,比如100000, 然后遍历 2-100000之间所有的素数,如果分子分母同时可以整数则约分,直到化成最简分数

时间: 2024-10-13 11:32:04

带分数计算程序思路的相关文章

蓝桥杯 - 带分数 (DFS)

历届试题 带分数 时间限制:1.0s   内存限制:256.0MB 问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0). 类似这样的带分数,100 有 11 种表示法. 输入格式 从标准输入读入一个正整数N (N<1000*1000) 输出格式 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数. 注意:不要求输出每个表示,

蓝桥杯 历届试题 带分数 DFS最容易理解版,内有解析

历届试题 带分数 时间限制:1.0s   内存限制:256.0MB 问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0). 类似这样的带分数,100 有 11 种表示法. 输入格式 从标准输入读入一个正整数N (N<1000*1000) 输出格式 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数. 注意:不要求输出每个表示,

蓝桥杯练习系统历届试题 带分数 dfs

问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0). 类似这样的带分数,100 有 11 种表示法. 输入格式 从标准输入读入一个正整数N (N<1000*1000) 输出格式 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数. 注意:不要求输出每个表示,只统计有多少表示法! 样例输入1 100 样例输出1 11 样例输入

带分数的求法(蓝桥杯)

问题描述:带分数 100 可以表示为带分数的形式: 100 = 3 + 69258 / 714 还可以表示为: 100 = 82 + 3546 / 197 注意特征:带分数中,数字 1~9 分别出现且只出现一次(不包含0) 类似这样的带分数,100 有11 种表示法. 题目要求: 从标准输入读入一个正整数 N (N<1000*1000) 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数. 注意:不要求输出每个表示,只统计有多少表示法! 例如: 用户输入:100 程序输出:11 再

n皇后2种解题思路与代码-Java与C++实现

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了n皇后问题的解题思路,并分别用java和c++实现了过程,最后,对于算法改进,使用了位运算. 一.问题抛出与初步解题思路 问题描述:八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上. 转化规则:其实八皇后问题可以推广为更一般的n皇后

历届试题 带分数

问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0). 类似这样的带分数,100 有 11 种表示法. 输入格式 从标准输入读入一个正整数N (N<1000*1000) 输出格式 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数. 注意:不要求输出每个表示,只统计有多少表示法! 样例输入1 100 样例输出1 11 样例输入

linux开机获取不到IP排查思路

最近发现linux主机重启老是获取不到IP,每次都要手动dhclient eth0一下,很麻烦. 想了下,可能有问题 于是乎,就有这个排查思路: 1.查看开机时是否将网卡连接上来: 2.在虚拟机内使用命令查看,是否开机启动network服务,主要看3,5两个级别,最好开启: 3. 另外还需要看下网卡配置文件,是否配置正确,主要看 ONBOOT:开机启动网卡.这一项要是yes BOOTPROTO:网络分配方式,静态,这里需要小写,例如dhcp(dhcp自动获取),static(以静态IP方式存在)

《好好说话》:常见沟通场景的应对误区与应答思路、应答句式。4星。

全书针对谈话的常见场景,分析双方的本质问题和应答方的常见应对误区.应该的应答思路与句式.对沟通双方的思路的分析比较有功力. 感觉是从大专辩论赛的角度来组织全书的结构的.我更同意马东在序言中的说法,这本书更应该叫<好好思考>.不过如果从“好好思考”的角度来写书,全书的结构和重点要做一些变化. 书中把语言沟通的五种常见场景(沟通.说服.谈判.演讲.辩论)称作五个维度,还画了一个五边形,我认为这是全书最大的败笔,这里说“五种场景”比“五个维度”跟合适,用表格比用五边形更合适. 个人感觉:在大部分的场

Nginx+PHP (Fastcgi)常见502和504解决思路分享

公司一台测试服务器,最近出现504和502问题:(环境LNMP,php编译安装,Fastcgi模式),问题不难解决,但这里分享一下自己的排查思路和处理问题的方式. 504 Gateway Time-out,nginx 502 bad gateway 一.分析问题: Nginx 504 Gateway Time-out的含义是没有请求到可以执行的PHP-CGI. Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于读取资源的等没有执行完毕而导致PHP-CGI进程