• 74- 最大乘积


    链接:https://www.nowcoder.com/acm/contest/110/A
    来源:牛客网

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 262144K,其他语言524288K
    64bit IO Format: %lld

    题目描述

    这题要你回答T个询问,给你一个正整数S,若有若干个正整数的和为S,则这若干的数的乘积最大是多少?请输出答案除以2000000000000000003(共有17 个零) 的余数。
    举例来说,当 S = 5 时,若干个数的和为 5 的情形有以下 7 种(不考虑数字的顺序的话):
    1. 1 + 1 + 1 + 1 + 1
    2. 1 + 1 + 1 + 2
    3. 1 + 1 + 3
    4. 1 + 2 + 2
    5. 1 + 4
    6. 2 + 3
    7. 5
    他们的乘积依序为:
    1. 1 * 1 * 1 * 1 * 1 = 1
    2. 1 * 1 * 1 * 2 = 2
    3. 1 * 1 * 3 = 3
    4. 1 * 2 * 2 = 4
    5. 1 * 4 = 4
    6. 2 * 3 = 6
    7. 5 = 5
    其中乘积最大的是 2 * 3 = 6。

    输入描述:

    输入的第一行有一个正整数 T,代表该测试数据含有多少组询问。
    接下来有 T 行,每个询问各占 1 行,包含 1 个正整数,代表该询问的 S 值。

    输出描述:

    对于每个询问,请输出答案除以 2000000000000000003(共有17个零) 的余数。
    示例1

    输入

    10
    1
    2
    3
    4
    #include <bits/stdc++.h>
    using namespace std;
    long long mp[2004] = {0, 1, 2, 3, 4, 6};
    
    int main(){
    	int t = 0;
    	for(int i = 6; i < 2001; i++){
    		mp[i] = mp[3] * mp[i - 3] % 2000000000000000003;
    	}
    	cin >> t;
    	while(t--){
    		int n;
    		cin >> n;
    		cout << mp[n] <<  endl;	
    	}
    	return 0;
    }
    

      

    5 6 7 8 9 100

    输出

    1
    2
    3
    4
    6
    9
    12
    18
    27
    7412080755407364

    备注:

    1 ≤ T ≤ 100
    1 ≤ S ≤ 2000
  • 相关阅读:
    第十二章 基本数据类型
    第十一章 变量名的力量
    第十章 使用变量的一般事项
    第九章 伪代码编程过程
    第八章 防御式编程
    JMeter简介
    第七章 高质量的子程序
    第六章 可以工作的类
    第五章 软件构建中的设计
    第四章 关键的“构建”决策
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/9057906.html
Copyright © 2020-2023  润新知