最强DE战斗力

最强DE战斗力

 最强DE战斗力

时间限制: 1 Sec  内存限制: 128 MB

提交: 40  解决: 14

[
提交][
状态]

题目描述

春秋战国时期,赵国地大物博,资源非常丰富,人民安居乐业。但许多国家对它虎视眈眈,准备联合起来对赵国发起一场战争。

显然,面对多个国家的部队去作战,赵国的兵力明显处于劣势。战斗力是决定战争成败的关键因素,一般来说,一支部队的战斗力与部队的兵力成正比。但当把一支部队分成若干个作战队伍时,这个部队的战斗力就会大大的增强。

一支部队的战斗力是可以通过以下两个规则计算出来的:

1.若一支作战队伍的兵力为N,则这支作战队伍的战斗力为N;

2.若将一支部队分为若干个作战队伍,则这支部队的总战斗力为这些作战队伍战斗力的乘积。

比如:一支部队的兵力为5时的战斗力分析如下:

 

 

 

 

情况

 

 

 

 

作战安排

总的战斗力

1

1,1,1,1,1(共分为5个作战队伍)

1*1*1*1*1=1

2

1,1,1,2   (共分为4个作战队伍)

1*1*1*2=2

3

1,2,2     (共分为3个作战队伍)

1*2*2=4

4

1,1,3     (共分为3个作战队伍)

1*1*3=3

5

2,3        (共分为2个作战队伍)

2*3=6

6

1,4        (共分为2个作战队伍)

1*4=4

7

5           (共分为1个作战队伍)

5=5

 

显然,将部队分为2个作战队伍(一个为2,另一个为3),总的战斗力达到最大! 

输入

第一行: N        表示有N组测试数据。  (2<=N<=5)

接下来有N行,每行有一个整数Ti 代表赵国部队的兵力。 (1 <= Ti <= 1000)i=1,…N

输出

对于每一行测试数据,输出占一行,仅一个整数S, 表示作战安排的最大战斗力。

样例输入

2
5
4

样例输出

6
4

提示

 

来源

第五届河南省大学生程序设计竞赛

 

要想使乘积最大显然最后肯定是2和3的乘积,于是我用了递归。。1000范围内肯定WA,200就不行了。。于是,大数,怎么大数呢,大数相乘?有点意思,不过你又错了,它从哪来的大数相乘啊。

前边说了乘的肯定是2或者3,所以就是一个大数乘以一个2或者3,能乘3肯定不乘2,那么问题来了,乘几次?数/3就好了

CODE:

#include<stdio.h>
#include<string.h>

int sum[205];

void multify(int n)   // 函数,这个大数乘的是几 (2or3,要是数除3余1的话,乘4,因为乘3再乘1没有乘4大==||
{

      int i, t = 0;

     for(i = 0; i < 200; i++, t /= 10)
    {

             t = sum[i] * n + t;  
            sum[i] = t % 10;    // 
    }
}

int main()
{

         int n, t, x, i;

        scanf(“%d”, &n);

        while(n–)
       {

              memset(sum, 0, sizeof(sum));
              sum[0] = 1;

     scanf(“%d”, &t);

    x = t / 3;  // 需要乘以几次3

    if(t % 3 == 1)   x–;   // 如果是1 ,就少乘一次3,乘一次4

    for(i = 0; i < x; i++)
      multify(3);

    if(t % 3 == 1)   multify(4);  // 乘一次4
    else if(t % 3 == 2)   multify(2);   //如果余2,就多乘以一次2。

    for(i = 200; i >= 0; i–)
      if(sum[i])
        break;   //找 开始的位数

    for(; i >= 0; i–)
      printf(“%d”, sum[i]);   //按位输出
    printf(“\n”);
  }
  return 0;
}

 

能不能好好想。

dissectible ~! Careful Analysis ~! cut it up ~! anatomize ~! scrutiny~!

(好好读题~题上也有说乘以2或者3最大。。

转载于:https://www.cnblogs.com/Tinamei/p/4480096.html

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109465.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 测试用例编写_功能测试用例自动生成

    测试用例编写_功能测试用例自动生成前言写用例之前,我们应该熟悉API的详细信息。建议使用抓包工具Charles或AnyProxy进行抓包。har2case我们先来了解一下另一个项目har2case他的工作原理就是将当前主流的抓

    2022年8月6日
    3
  • 常用电平转换芯片_硬件电路设计教程

    常用电平转换芯片_硬件电路设计教程在设计数字电路的时候,经常会遇到控制电压不一致,尤其是ARM与一些芯片的电平不一致,比如ARM是5V供电,芯片是3.3V,或者反过来。虽然有的芯片两种电压兼容,不如STM32系列的ARM在3.3V供电的情况的下仍可以兼容5V输入,但是为了安全起见,一般都会使用电平转换芯片。电平转换芯片有两个电源分别为VCCA,对应A1-A8输入;VCCB,对应B1-B8输入.OE使能低…

    2022年8月10日
    5
  • JAVA获取服务器路径的方法

    JAVA获取服务器路径的方法1、在JSF环境中获取到ServletContext:12ServletContextsc=(ServletContext)FacesContext.getCurrentInstance

    2022年7月4日
    19
  • clion激活码获取【在线注册码/序列号/破解码】

    clion激活码获取【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    56
  • JAVA求数组的平均数,众数,中位数[通俗易懂]

    JAVA求数组的平均数,众数,中位数[通俗易懂]目录1、名称解释2、实例代码(1)求平均数(2)求中位数(3)求众数1、名称解释平均数:是指一组数据之和,除以这组数的个数,所得的结果就是平均数。中位数:中位数是指把一组数据从小到大排列,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数。众数:众数是指一组数据中出现次数最多的那个数,众数可以是0个或多个。2、实例代码(1)求平均数publicstaticdoublem..

    2022年9月17日
    0
  • HTML5期末大作业:大学生个人网站设计——我们的班级(7页) HTML+CSS+JavaScript 学生DW网页设计作业成品 html网页制作代码大全 html5网页设计作业代码

    HTML5期末大作业:大学生个人网站设计——我们的班级(7页) HTML+CSS+JavaScript 学生DW网页设计作业成品 html网页制作代码大全 html5网页设计作业代码HTML5期末大作业:大学生个人网站设计——我们的班级(7页)HTML+CSS+JavaScript学生DW网页设计作业成品web课程设计网页规划与设计计算机毕设网页设计源码常见网页设计作业题材有个人、美食、公司、学校、旅游、电商、宠物、电器、茶叶、家居、酒店、舞蹈、动漫、明星、服装、体育、化妆品、物流、环保、书籍、婚纱、游戏、节日、戒烟、电影、摄影、文化、家乡、鲜花、礼品、汽车、其他等网页设计题目,A+水平作业,可满足

    2022年9月17日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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