分遗产

分遗产

大家好,又见面了,我是全栈君。

题目描写叙述

有一位阿拉伯老人,生前养有11匹马,他去世前立下遗嘱:大儿子、二儿子、小儿子分别继承遗产的1/2、1/4、1/6。
儿子们想来想去没法分:他们所得到的都不是整数,即分别为11/2、11/4、11/6。总不能把一匹马割成几块来分吧?
聪明的邻居牵来了自己的一匹马。对他们说:“你们看,如今有12匹马了。老大得12匹的1/2就是6匹,老二得12匹的1/4就是3匹。 老三得12匹的1/6就是2匹。还剩一匹我照旧牵回家去。

”这样把难分的问题攻克了。

如今又有一个老人要分遗产了,他有m匹马(1≤m≤1000000),而且有n个儿子(1≤n≤10),每一个儿子分别得到1/a1、1/a2、…、1/an的遗产。
由于马不能切割,而且遗产要所有分完,所以请你用上面那位聪明的邻居的方法计算一下每一个儿子能分到几匹马。

输入描写叙述:
输入包含多组測试数据。
每组測试数据包含两行:
第一行为m、n。分别代表老人拥有的马匹数和几个儿子。

第二行有n个数据a1、a2、…、an。依次代表大儿子、二儿子…第n个儿子分到的遗产的份额。(0 < ai < 50)
程序以输入0 0结束。该行不做处理。

输出描写叙述:
依照上面介绍的方法解决问题。
假设那种方法不能解决问题(即所有儿子不能得到整数匹马),则你的程序要输出”Can’t Solve”;
否者依次输出大儿子、二儿子…得到的马的匹数。

每一个数之间有一个空格隔开(最后一个数据后面没有空格)。

输入样例:
11 3
2 4 6
2 2
3 3
0 0

输出样例:
6 3 2
1 1

#include<iostream>
using namespace std;
int  LCM(int num1,int num2){
    int x,y;
    if(num1<num2){
        num1^=num2;num2^=num1;num1^=num2;
    }
    x=num1;y=num2;
    while(y!=0)
    {int temp=x%y;
    x=y;
    y=temp;
    }
    return (num1*num2)/x;
}
int main(){

    int n,m;
    cin>>m>>n;
    while (n!=0&&m!=0)
    {
        int temp=1;int sum=0;int Multiply=1;
        int heritage[10];
        for (int i = 0; i <n; i++)
        {
            cin>>heritage[i];
        }
        for (int i = 0; i <n; i++)
        {

            temp=LCM(temp,heritage[i]);
            Multiply*=heritage[i];
        }
        for (int i = 0; i <n; i++)
        {
            sum+=temp/heritage[i];
        }
        if (m%sum==0)
        {   int k=m/sum;
        for (int i = 0; i <n-1; i++)
        {
            cout<<k*temp/heritage[i]<<" ";
        }
        cout<<k*temp/heritage[n-1]<<endl;
        }
        else
        {
            cout<<"Can't Solve"<<endl;
        }
        //cout<<sum;
        cin>>m>>n;
    }
    return 0;
    //cout<<LCM(4,6);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115629.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 视频编码格式不支持_缺少编码解码器

    视频编码格式不支持_缺少编码解码器AVI格式视频文件编码格式缺少编码解释器且该项目的编码格式不受支持产生0xc00d5212错误(见下图)解决方案:将AVI格式视频转换为MP4格式视频文件。方式:通过格式工厂软件(见下图)。下载链接:点击下载格式工厂4.8.0.0官方免费版操作:一、下载好软件(格式工厂)之后,点击启动软件进去,点击红色箭头指向的红色框的内容(->MP4)。二、点击红色箭头指向的红色框的…

  • 人工势场法matlab讲解_【机器人路径规划】人工势场法

    人工势场法matlab讲解_【机器人路径规划】人工势场法阅读本文需要的基础知识为:理解机器人的构型空间。建议阅读:机器人运动规划中的Cspace怎样理解?为什么不直接在笛卡尔坐标系下运算呢?本文的实现程序与使用说明见我的学习工具箱:小明工坊:【个人开源】机器人运动规划学习工具箱使用说明基本原理1.概述我们打两个比方来说明人工势场法的作用机理。首先,我们把构型空间比作一个电势场平面,机器人(的当前构型)比作空间中一点。如果让机器人的起点和障碍物带正…

  • thinkphp3.2配置redis缓存和文件缓存

    thinkphp3.2配置redis缓存和文件缓存

    2021年10月26日
  • mt4编程语言 c语言,MT4编程之MQL4编程语言介绍[通俗易懂]

    mt4编程语言 c语言,MT4编程之MQL4编程语言介绍[通俗易懂]语言介绍MetaQuotesLanguage4(MQL4)是一种新的内置型程序用来编写交易策略。这种语言可以创建你自己的智能交易,使自己的交易策略能够完全自动地执行。而且,MQL4还能自定义客户指标,脚本和数据库。内包含了大量可以分析当前及历史报价所必须的函数,以及一些基本的运算和逻辑操作。并内置了一些基本的指标和操作命令。MetaEditor4集合了编写MQL4程序代码的各种语句,它…

  • 正则实现二代身份证号码验证详解[通俗易懂]

    正则实现二代身份证号码验证详解[通俗易懂]最近项目需要对身份证进行比较合理的筛选,并不想用到第三方接口,所以写了个方法:包括支持身份证号合法性验证,支持18位身份证号,支持地址编码、出生日期、校验位验证.基本上这样就可以了.IdCodeValid:function(code){ //身份证号合法性验证 //支持15位和18位身份证号 //支持地址编码、出生日期、校验位验证 varcity={11:”北京”,12:”…

  • IDEA 2021 mybatis log plugin 激活【2021免费激活】

    (IDEA 2021 mybatis log plugin 激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1435QFILVV-eyJsa…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号