#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=10+5,M=2e6+5,INF=2e7;
int dis[N][N];
char s[M];int len;
inline ll cal(int x,int y){
for(int i=0;i<10;++i) for(int j=0;j<10;++j) dis[i][j]=INF;
for(int i=0;i<10;++i) dis[i][(i+x)%10]=1,dis[i][(i+y)%10]=1;
for(int k=0;k<10;++k) for(int i=0;i<10;++i) for(int j=0;j<10;++j)
if(dis[i][j]>dis[i][k]+dis[k][j]) dis[i][j]=dis[i][k]+dis[k][j];
ll ans=0;
for(int i=1;i<len;++i){
int c1=s[i]-'0',c2=s[i+1]-'0';
if(dis[c1][c2]==INF) return -1;
ans+=dis[c1][c2]-1;
}
return ans;
}
int main(){
scanf("%s",s+1);len=strlen(s+1);
for(int x=0;x<10;++x)
for(int y=0;y<10;++y) printf("%lld%c",cal(x,y),(y==9)?'\n':' ');
}
cf1202B. You Are Given a Decimal String...(求出所有的x-y型 对于s串需要添加多少字符可被该计算器打印 巧妙地最短路暴力)
最新推荐文章于 2020-05-25 17:28:52 发布