HJ82 将真分数分解为埃及分数(需要知道求埃及数的数学方法)

贪心算法解埃及分数 题目描述 在古埃及,人们使用单位分数的和表示一切有理数。例如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为在加数中不允许有相同的。 对于一个分数a/b,表示方法有很多种,其中加数少的比加数多的好,如果加数个数相同,则最小的分数越大越好,例如:19/45=1/5+1/6+1/18是最优解。 思路 利用贪心算法,枚举出所有可能的解。 假设给的分数是 19/45,那么第一个分数我们可以从 1/3开始枚举(1/2>19/45舍去) 19/45-1/3=4/45 利用贪心算法的思想下一个分数选择 阅读详情
描述
分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。
注:真分数指分子小于分母的分数,分子和分母有可能gcd不为1!
如有多个解,请输出任意一个。
请注意本题含有多组样例输入!


输入描述:
输入一个真分数,String型

输出描述:
输出分解后的string

示例1
输入:
8/11
2/4

输出:
1/2+1/5+1/55+1/110
1/3+1/6

说明:
第二个样例直接输出1/2也是可以的

数学家斐波那契提出的一种求解埃及数的贪心算法,准确的算法表述应该是这样的:
设某个真分数的分子为a,分母为b;
把c=(b/a+1)作为分解式中第一个埃及数的分母;
将a-b%a作为新的a;
将b*c作为新的b;
如果a等于1,则最后一个埃及数为1/b,算法结束;
如果a大于1但是a能整除b,则最后一个埃及数为1/(b/a),算法结束;
否则重复上面的步骤。

专注

#include <stdio.h>

#if 1
#define dbg printf
#else
#define dbg
#endif

void calcu(int a, int b)
{
    int q, r;

    if(a == 0)
    {
        printf("\n");
    }
    else if(b%a == 0)
    {
        printf("1/%d\n", b/a);
    }
    else
    {
        q = b/a;
        r = b%a;
        printf("1/%d", q+1);
        if(a-r != 0)
        {
            printf("+");
        }
        calcu(a-r, (q+1)*b);
    }
}

int main(void)
{
    int a, b;
    while(scanf("%d%*c%d", &a, &b) != EOF)
    {
        if(b%a != 0)
        {
            calcu(a, b);
        }
        else
        {
            printf("1/%d\n", b/a);
        }
    }
    return 0;
}
【牛客网华为机试】HJ82 将真分数分解为埃及分数 题目 描述 分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11=1/2+1/5+1/55+1/110。 注:真分数指分子小于分母的分数,分子和分母有可能gcd不为1! 如有多个解,请输出任意一个。 请注意本题含有多组样例输入! 输入描述: 输入一个真分数,String型 输出描述: 输出分解后的string 示例1 输入: 8/11 2/4 输出: 1/2+1/5+1/55+1/110 1/3+1/6 .. 阅读详情

相关推荐

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统,记录配置过程

Jack的小窝 5942

将真分数分解为埃及分数

题目描述 分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。 输入描述: 输入一个真分数,String型 输出描述: 输出分解后的string 输入: 8/11 输出: 1/2+1/5+1/55+1/110 代码如下: while True: try: ...

无情Array 1969

Eureka常见面试题总结

点击关注我的博客原文 Eureka是Netflix组件的一个子模块,也是核心模块之一。云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移(来源springcloud中文网的介绍:https://www.springcloud.cc/)。下图总结了Eureka服务端(以下简称服务端)与Eureka客户端(以下简称客户端)之间协同工作的流程: 流程说明:...

u012105931的博客 2万+

【C语言】埃及分数(应用算法:贪心算法)

原理(手写的,以后慢慢敲上去) 【代码】 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #define maxSize 10 int main() { int a, b;//分子,分母 int q;//商数 a = 8, b...

Read by heart 4506

stm32使用TB6600驱动器控制42BYGH型步进电机

stm32使用TB6600驱动器控制42BYGH型步进电机

qq_35653974的博客 9582

【网络协议】TCP的拥塞控制机制

前言 计算机网络中的带宽、交换节点中的缓存和处理机等,都是网络的资源,在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做拥塞。 所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载。要注意用拥塞控制与流量控制的区别,拥塞控制是一个全局性的过程,涉及到所有的额主机、路由器,以及与降低网 拥塞控制的算法有:慢开始、拥塞避免、快重传、快恢复四种。 慢开始和拥塞避免 发送方维持一个拥塞窗口的状态变量,其大小取决于网络的拥塞程度

兰亭风雨的专栏 1万+

华为机试:HJ82 将真分数分解为埃及分数

分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。注意:由于题目要求输出以字典序排序的埃及分数,因此可以在egyptianFraction()函数中对分数进行排序。注:真分数指分子小于分母的分数,分子和分母有可能gcd不为1!第二个样例直接输出1/2也是可以的。输入一个真分数,String型。如有多个解,请输出任意一个。输出分解后的string。

倚楼听风雨的博客 1045

瑞萨RA6M5驱动ST7735屏幕避坑指南:从软件SPI到显示汉字与图形的完整流程

本文详细介绍了瑞萨RA6M5单片机驱动ST7735屏幕的完整流程,涵盖硬件连接、软件SPI控制、汉字显示及图形绘制优化等关键步骤。通过避坑指南和实用代码示例,帮助开发者解决屏幕初始化、时序控制、字库移植等常见问题,实现高效稳定的显示效果。

weixin_28705087的博客 275

贪心算法之埃及分数问题

贪心算法之埃及分数

qq_43213240的博客 3202

C#与倍福TwinCAT3通信实战:ADS协议封装与设备变量读写完整源码

倍福(Beckhoff)TwinCAT3 作为工业自动化领域主流的软PLC系统,其内置的ADS(Automation Device Specification)协议是实现上位机与TwinCAT3通信的核心标准。传统ADS通信开发存在门槛高(协议细节复杂)、稳定性差(缺乏统一异常处理)、复用性低(重复编码)等问题。本文基于 C# 技术栈,聚焦“协议封装标准化、变量读写易用化、通信稳定工业化”核心需求,提供一套完整的 ADS 协议封装方案与设备变量读写源码。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1987

肖特基二极管选型参数,结构原理,工艺与注意问题总结

肖特基二极管(Schottky Diode)是一种特殊的二极管,也被称为肖特基势垒二极管。它是利用金属与半导体接触形成的金属-半导体结原理制成的。与传统的PN结二极管相比,肖特基二极管具有更低的正向压降、更高的开关速度、更高的反向恢复时间以及更好的温度稳定性等特点。本文对肖特基二极管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 812

华为机试HJ82:将真分数分解为埃及分数

C++实现——将真分数分解为埃及分数

翟天保的博客 1万+

嵌入式软考必备知识点:嵌入式系统开发中的重要概念和示例代码

在嵌入式软考中,有一些重要的知识点需要掌握,包括嵌入式系统的基本概念、编程语言、实时操作系统和硬件接口等。实时操作系统是一种专门设计用于嵌入式系统的操作系统,可以提供对任务调度、中断处理和资源管理等方面的支持。GPIO(通用输入输出):GPIO是嵌入式系统中常用的硬件接口,用于连接外部设备和嵌入式系统。以上是嵌入式软考中的一些必备知识点,包括嵌入式系统的基本概念、编程语言、实时操作系统和硬件接口。通过配置串口的波特率、数据位数和校验位等参数,可以实现与其他设备的可靠通信。一、嵌入式系统的基本概念。

PixeGO的博客 312

100个python算法超详细讲解:将真分数分解为埃及分数

1.问题描述 现输入一个真分数,请将该分数分解为埃及分数。 2.问题分析 真分数(a proper fraction)是指分子比分母小的分数,其分数值小 于1。如1/2、3/5、8/9等都是真分数。 分子是1的分数,叫单位分数。古代埃及人在进行分数运算时,只 使用分子是1的分数,因此这种分数也叫作埃及分数,或者叫单分子分 数。例如,8/11=1/2+1/5+1/55+1/110。 我们约定分子分母都是自然数,分数的分子用a表示,分母用b表 示。若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃 ..

Lee达森的博客 2032

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

华为机试HJ82 将真分数分解为埃及分数

首先看一下题。

bingw0114的博客 521

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

HJ82 将真分数分解为埃及分数

分子为 1 的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。注:真分数指分子小于分母的分数,分子和分母有可能 gcd 不为 1!第二个样例直接输出 1/2 也是可以的。输入一个真分数,String 型。如有多个解,请输出任意一个。输出分解后的 string。

???的博客 202

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【贪心】HJ82.将真分数分解为埃及分数

将真分数分解为埃及分数

jqq125的博客 563

华为机试-082-中等-HJ82.将真分数分解为埃及分数

【代码】华为机试-082-中等-HJ82.将真分数分解为埃及分数

tttzzzqqq2018的博客 491

《华为机试》刷题之HJ82 将真分数分解为埃及分数

一、题目 二、示例 三、代码 # 代码 1 while True: try: fenzi,fenmu = map(int, input().split('/')) s = '' for i in range(fenzi): s += '+' + '1' + '/' + str(fenmu) print(s[1:]) except: break # 代码 2 while True:

胡萝卜 671

【华为od刷题(C++)】HJ82 将真分数分解为埃及分数(贪心算法)

然而,并不是所有问题都适合使用贪心算法,因此在选择是否使用贪心算法时,我们需要仔细分析问题的结构是否符合贪心算法的要求。是一种在每一步选择中都做出当前状态下最优的选择,从而希望通过一系列的局部最优选择,最终得到全局最优解的算法;其数学原理依赖于埃及分数的定义和贪心算法的策略,即每次选择最适合的单位分数,逐步逼近最终的解。这个程序通过贪心算法将一个普通分数转换为埃及分数的和,每次选择一个最接近的单位分数。在埃及分数表示的情况下,我们的贪心策略是选择当前分数中最大的单位分数。来实现分数的埃及分数表示;

m0_64866459的博客 799

HJ 82 将真分数分解为埃及分数

思路: 1. 暴力破解算法,从 [2, INT_MAX] 选择分母,组成埃及分数 1/Temp , 与原分数相减,得到新的真分数,继续选择 Temp,知道相减后的结果是0; 挑选 Temp 的时间复杂度为 O(n); 2. 贪心算法,假设原真分数为 0 < a / b < 1,令商 q = b / a,余数 r = b % a,可知真分数a / b > 1/ (q+1) ,可以选择 q+1 作为暴力破解选出的分母 Temp, 挑选 Temp 的时间复杂度为 O(1); 然后相减,.

专栏 698

java-HJ82_将真分数分解为埃及分数

java-HJ82 将真分数分解为埃及分数。

d3y1`5 81_09 129

HJ82 将真分数分解为埃及分数 —— 华为机考练习题

一、题目 描述 分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。 注:真分数指分子小于分母的分数,分子和分母有可能gcd不为1! 如有多个解,请输出任意一个。 输入描述: 输入一个真分数,String型 输出描述: 输出分解后的string 二、代码 /** 数学家斐波那契提出的一种求解***分数的贪心算法,准确的算法表述应该是这样的: 设某个真分数的分子为a,分母为b; 把c=(b/a+1)

KevinChen2019的博客 446
上一篇: HJ81 字符串字符匹配(简单,一把过)
下一篇: HJ83 二维数组操作(一把过)
你板子冒烟了
博客等级 码龄8年 1278粉丝 582原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值