TIOJ 2009 . 數字密碼鎖(Lock)
先用還原後減掉還原前,得到要用幾步去還原
範例輸入
9 2
1 2 3 4 5 6 7 8 9
1 2 3 4 6 7 7 9 1
如上範例輸出
得到幾步還原之陣列如下
0 0 0 0 1 1 0 1 1
迴圈跑到有值的地方就減掉,並加進答案
注意不要忘記把負數+9(因為可能可以多調整好幾圈)
以下為code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define AC ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int main()
{
AC
int n,k,r=0;
cin>>n>>k;
vector<int> dis(n);
for(int i=0;i<n;i++)
cin>>dis[i];
for(int i=0;i<n;i++)
{
int t;
cin>>t;
dis[i]=t-dis[i];
if(dis[i]<0) dis[i]+=9;
}
for(int i=0;i<=n-k;i++)
{
if(dis[i])
{
int t=dis[i];
for(int j=0;j<k;j++)
{
dis[i+j]-=t;
if(dis[i+j]<0) dis[i+j]+=9;
}
r+=t;
}
}
if(count(dis.begin(),dis.end(),0)==n) cout<<r<<'\n';
else cout<<0<<'\n';
}
留言
張貼留言