zoukankan      html  css  js  c++  java
  • NYOJ--541--最强DE 战斗力(递推)

    最强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       Name: NYOJ--541--最强DE 战斗力
     3       Copyright: ©2017 日天大帝
     4       Author: 日天大帝
     5       Date: 24/04/17 19:20
     6       Description: 大数,java快又省,这道题可以递推做
     7                           思路:递推,先找到核心的基础元素:当然是123了,从4开始可以拆了
     8                           4 = 2 * 2
     9                           5 = 3 * 2
    10                           6 = 3 * 3
    11                           7 = 3 * 4--> = 2 * 2;
    12                           8 = 3 * 5--> = 3 * 2;
    13                           发现3时核心的基础元素,规律来了,递推吧
    14  */
    15 import java.util.*;
    16 import java.math.*;
    17 public class  Main{
    18    
    19     public static void main(String[] args) {
    20         Scanner cin = new Scanner(System.in);
    21         BigInteger arr[] = new BigInteger[1002];
    22         arr[1] = BigInteger.valueOf(1);
    23         arr[2] = BigInteger.valueOf(2);
    24         arr[3] = BigInteger.valueOf(3);
    25         arr[4] = BigInteger.valueOf(4);//不能从4开始递推,4 不能拆成3,1
    26         for(int i=5; i< 1001; ++i){
    27             arr[i] = BigInteger.valueOf(3).multiply(arr[i-3]);
    28         }
    29         int n = cin.nextInt();
    30         while( n-- > 0 ){
    31             int temp = cin.nextInt();
    32             System.out.println(arr[temp]);
    33         }
    34     }
    35 }
  • 相关阅读:
    1104 Sum of Number Segments (20 分)(数学问题)
    1092 To Buy or Not to Buy (20 分)(hash散列)
    1082 Read Number in Chinese (25 分)(字符串处理)【背】
    1105 Spiral Matrix (25 分)(模拟)
    初识网络安全及搭建网站(内网)
    HTML5开发者需要了解的技巧和工具汇总(转)
    native+web开发模式之web前端经验分享
    移动平台3G手机网站前端开发布局技巧汇总(转)
    Asp.net 中图片存储数据库以及页面读取显示通用方法详解附源码下载
    使用H3Viewer来查看VS2010的帮助文档
  • 原文地址:https://www.cnblogs.com/langyao/p/6758533.html
Copyright © 2011-2022 走看看