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

  • 相关阅读:
    flash中网页跳转总结
    as3自定义事件
    mouseChildren启示
    flash拖动条移出flash无法拖动
    需要一个策略文件,但在加载此媒体时未设置checkPolicyFile标志
    Teach Yourself SQL in 10 Minutes
    电子书本地转换软件 Calibre
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes – Page 31 练习
  • 原文地址:https://www.cnblogs.com/Mary-Sue/p/9189943.html
Copyright © 2011-2022 走看看