Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
42561 | 董承诺 | 加强版密码锁 | C++ | 解答错误 | 0 | 0 MS | 344 KB | 640 | 2022-07-02 17:14:09 |
#include <bits/stdc++.h> using namespace std; int a,b[105],c[105]; long long d=2100000000; 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,-2100000000,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; }