提交时间:2022-07-02 17:15:31

运行 ID: 42562

#include<bits/stdc++.h> using namespace std; int a,b[105],c[105]; long long d=INT_MAX; long long e[105][105]; long long f(int g,int h) { return pow(min(abs(b[g]-h),min(100+h-b[g],100+b[g]-h)),2); } int main(){ cin>>a>>c[1]; for(int i=1;i<=a;i++) { b[i]=c[i]%100; c[i+1]=(c[i]*6807+2831)%201701; } memset(e,-INT_MAX,sizeof(e)); for(int i=0;i<=99;i++){ e[1][i]=f(1,i); } for(int i=2;i<=a;i++){ for(int j=i-1;j<=99-(a-i);j++){ for(int k=i-2;k<=j-1;k++){ e[i][j]=min(e[i][j],e[i-1][k]+f(i,j)); } } } for(int i=a-1;i<=99;i++){ d=min(d,e[a][i]); } cout<<d<<endl; return 0; }