首页 > 试题广场 >

模数求和

[编程题]模数求和
  • 热度指数:8671 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现给定n个整数,并定义一个非负整数m,且令f(m) = (m%a1)+(m%a2)+...+(m%an)。
此处的X % Y的结果为X除以Y的余数。
现请你找出一个m,求出f(m)的最大值。


输入描述:
输入包含两行,第一行为一正整数n,(1<n<=3000)
第二行为n个整数a1,a2,...,an ,其中(2<=ai<=10^5)


输出描述:
输出仅包含一行,输出f(m)的最大值
示例1

输入

3
3 4 6

输出

10

说明

就样例而言,当m取11时可取得最大值。
头像 橙子爱吃桃子
发表于 2020-06-10 23:04:33
C++简洁代码: #include<bits/stdc++.h> using namespace std; int main(){ int n, temp, res = 0; cin >> n; while (cin >> temp) 展开全文
头像 牛客289281343号
发表于 2020-04-27 16:40:50
解题思路:观察规律,当m取这n个数的公倍数减1时,余数之和最大,且等于这n个数之和减n。import java.util.*;public class Main{ public static void main(String arg[]){ Scanner scan=new Sc 展开全文
头像 我不打朋友圈
发表于 2021-12-15 14:53:21
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main{ public static void main(String[] args) 展开全文
头像 苏觅云
发表于 2022-05-23 09:47:17
import java.util.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(Sys 展开全文
头像 bandiaoz
发表于 2024-12-26 14:42:41
解题思路 这是一道数学题目,主要思路如下: 问题分析: 需要找到一个 使 最大 的范围是 关键发现: 对于任意数 , 的结果一定小于 要使余数最大, 应该比所有 都大 对于每个 ,最大的余数是 解决方案: 对于每个输入的数 ,最大可能的余数是 最终结果就是所有 展开全文