Modulo Summation atcoder abc103

此题链接

题意,求f(m)的最大值,f(m)=(m mod a1)+(m mod a2)+…+(m mod an)。

思路:想一想我们要求f(m)的最大值,那我们是不是要满足每一个数都能取到最大值。每个位置的最大值就是自己此数-1,(所以我由此入坑,人呆滞了点,居然想到去求所有数最小公倍数-1再mod,成功炸掉)。因为维护想要的东西都是一个,根本每不要求最小公倍数!!!

代码如下:

#include
#include
#include
#include
#include
#include
#include
#include
#define IOS ios::sync_with_stdio(false);cin.tie();cout.tie(0)

using namespace std;
typedef long long ll;
const int N=5e5+100;
const int maxn=110;

map<string,int> q;

string str;
ll a[3010];

int main()
{
     
    IOS;
    ll n;
    cin>>n;

    ll max1=1,sum=0;
    for(int i=0;i<n;i++)
    {
     
        cin>>a[i];
        sum+=a[i]-1;
    }
    cout<<sum<<endl;
    return 0;
}

你可能感兴趣的:(Modulo Summation atcoder abc103)