Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
42562 | 董承诺 | 加强版密码锁 | C++ | 通过 | 100 | 0 MS | 348 KB | 633 | 2022-07-02 17:15:31 |
#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; }