首页 > 试题广场 >

模数求和

[编程题]模数求和
  • 热度指数:8631 时间限制: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时可取得最大值。
package main

import (
    "fmt"
    "os"
    "bufio"
)

var in=bufio.NewReader(os.Stdin)

func main() {
    var n int
    fmt.Scan(&n)
    //思路,答案为所有数的最小公倍数减一后分别取余各个数的加和
    var x,sum int
    for n>0{
        fmt.Fscan(in,&x)
        sum+=x-1
        n--
    }
    fmt.Print(sum)
}

发表于 2023-03-17 23:12:24 回复(0)