zoukankan      html  css  js  c++  java
  • P1887 乘积最大3 || CODE [VS] 3370 乘积最大3

    题目描述

    请你找出M个和为N的正整数,他们的乘积要尽可能的大。

    输出字典序最小的一种方案。

    输入输出格式

    输入格式:

     

    一行,两个正整数N,M

     

    输出格式:

     

    M个和为N的,乘积尽可能的大的正整数。

    输入输出样例

    输入样例#1: 复制
    6 3
    输出样例#1: 复制
    2 2 2

    说明

    对于100%的数据, 1 <= N <= 10^9,1 <= M <= 10^6

    是个数学题,感觉像个贪心。。。

    hhh,今儿心情真不好,某人真是让我鄙视的不行。

    人至贱,则无敌啊,

    也不是完全算吧,

    就是幼稚,可笑,还自以为有多厉害是吗,

    呵呵了。

    当大家都不喜欢你,在背后议论你,

    你还很开心的跑过来问:

    “哇,我听到你们提到我了耶,说我什么了呢?”,

    hhh,装的真可爱,

    明明是傻白甜,天天在我面前装高冷。

    恶心。你就天天拍她们的马屁吧。。。

    不扯这些了,烦心。

    其实越看越像个贪心题。

    如果n能整除m,那么分成m个n/m他们的乘积就最大。

    如果不能整除的话,那就先按n减去n除以m的余数是新的n,

    m-余数是新的m,跟第一种情况一样算出前一部分的。

    然后后一部分就剩下余数个数了,

    这些数的和比余数个新n/新m的和打了正好余数,

    所以循环枚举,每个数加1输出就好了。

    说不明白,也可能有问题,具体看代码理解吧。。。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 int n,m;
     9 
    10 int main()
    11 {
    12     scanf("%d%d",&n,&m);
    13     if(n%m==0)
    14     {
    15         for(int i=1;i<=m;++i)
    16             printf("%d ",n/m);
    17         return 0;
    18     }
    19     else
    20     {
    21         int l=n%m;
    22         n-=l;
    23         for(int i=1;i<=m-l;++i)
    24             printf("%d ",n/m);
    25         for(int i=1;i<=l;++i)
    26             printf("%d ",n/m+1);
    27         return 0;
    28     }
    29 }

    如果你不开心,那我就把右边这个帅傻子分享给你吧,
    你看,他这么好看,跟个zz一样看着你,你还伤心吗?
    真的!这照片盯上他五秒钟就想笑了。
    一切都会过去的。
    时间时间会给你答案2333

  • 相关阅读:
    [建议]我对博客园的发展的一点想法
    [转载] 理想、激情、生存—— 一位技术管理人员的20年工作经历和感悟
    FIT FOR .NET(3)
    基于真实项目的TDD应用
    [团队公告]博客园的敏捷软件开发团队成立了
    .NET数据访问体系结构指南
    这是不是微软MSN的一个Bug呢?
    抽象工厂的应用
    简单基础的问题,但是非常容易出错.
    VS 2005 Beta2 Team Suite Edtion
  • 原文地址:https://www.cnblogs.com/Mary-Sue/p/9189943.html
Copyright © 2011-2022 走看看