zoukankan      html  css  js  c++  java
  • NYOJ 541

     

    最强DE 战斗力

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述

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

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

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

    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
    来源
    第五届河南省程序设计大赛
     1 /*
     2  把一个数  N = 3^num + 2^b(b=0,1,2),此时 3^num*2^b最大
     3  据说是强人观察出来的,无语了                   
     4 */
     5 #include<stdio.h>
     6 #include<string.h>
     7 
     8 int ans[205];
     9 
    10 int multiply(int x)//大数乘小数 
    11 {
    12     int i,j,k;
    13     int temp = 0;
    14     int c = 0;
    15     for(i=0; i<200; i++)
    16     {
    17         temp = ans[i]*x+c;
    18         ans[i] = temp%10; 
    19         c = temp/10;   
    20     }
    21 }
    22 
    23 int main()
    24 {
    25     int i,j,k;
    26     int T;
    27     scanf("%d",&T);
    28     int num,n;
    29     while(T--)
    30     {
    31         memset(ans,0,sizeof(ans));
    32         scanf("%d",&num);
    33         n=num/3;//3的个数 
    34         ans[0]=1;//原来放在了multiply函数 
    35         if(num%3==1) //最后的1和3组成4,结果变大 
    36             n--;
    37             
    38         for(i=0;i<n;i++)
    39             multiply(3);
    40         if(num%3==1) 
    41             multiply(4);
    42         else if(num%3==2) 
    43             multiply(2);
    44             
    45         for(i=200;i>=0;i--)
    46         if(ans[i]) 
    47             break;
    48         for(;i>0;i--)
    49             printf("%d",ans[i]);
    50         printf("%d\n",ans[0]);
    51     }
    52     return 0;
    53 }
  • 相关阅读:
    [java tool]sonar与idea结合使用,度量代码质量
    【mockito】单元测试之mockito简单使用
    oracle ,mysql,postgres jdbc配置文件
    log4j配置文件及java调用 每个级别输出到不同的文件2
    log4j配置文件及java调用 每个级别输出到不同的文件
    tomcat编码问题
    pf4j实例 插件框架
    网络协议分为哪几层---物理层,连接层,网络层,传输层,应用层详解
    TF-IDF及其算法
    redhat7查看系统版本 修改主机名
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3055489.html
Copyright © 2011-2022 走看看