/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Wrong Answer 10ms 2.387 MiB
#2 Wrong Answer 23ms 2.387 MiB

Code

/*
 *   Copyright (c) 2025 Emon Thakur
 *   All rights reserved.
 */
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,x,a[200005];

bool notprime[1000006];
vector<ll>allprime;
void seive()
{
    for(int i=2;i<=1000;i++)
    {
        if(notprime[i]) continue;
        for(int j=i+i;j<=1000000;j+=i) notprime[j]=true;
    }
    for(int i=2;i<=1000000;i++) {if(!notprime[i]) allprime.push_back(i);}
}

ll cost(int l,int r,ll k)
{
    vector<ll> pd;
    ll kk = k;
    for(auto p:allprime)
    {
        if(kk%p==0) pd.push_back(p);
        while(kk%p==0) kk/=p;
    }if(kk>1) pd.push_back(kk);

    ll ans =0;
    for(int i=l;i<=r;i++)
    {
        ll cnt = 1e9;
        for(auto gcd:pd)
        {
            if(a[i]%gcd==0) {cnt=0; break;}
            cnt = min(cnt ,((a[i]+gcd)/gcd)*gcd - a[i]);
        }
        ans += cnt;
    }
    return ans;
}

ll ans(int start,int end,ll k)
{
    if(start==end)
    {
        if(__gcd(a[start],k)>1) return 0;
        else return cost(start,end,k);
    }
    int mid = (start+end-1)/2;
    return min(cost(start,mid,k)+ans(mid+1,end,k+1) , cost(mid+1,end,k)+ans(start,mid,k+1));
}

int main()
{
    seive();
    cin >> n >> x;
    cout<<ans(1,n,x)<<'\n';
}

Information

Submit By
Type
Submission
Problem
P1168 F. x ordinary array
Language
C++17 (G++ 13.2.0)
Submit At
2025-03-03 16:24:46
Judged At
2025-03-03 16:24:46
Judged By
Score
0
Total Time
23ms
Peak Memory
2.387 MiB