codeforces-540A. Combination Lock-题解

题目大意:

       组合锁由n个旋转磁盘表示,磁盘上的数字从0到9。McDuck必须转动一些磁盘,这样磁盘上的数字组合就形成了一个秘密组合。在一次移动中,他可以将一个磁盘向前或向后旋转一个数字。特别是,他可以从0到9,反之亦然。他需要的最少行动次数是多少?第一行包含一个整数n (1<=n<=1000),即组合锁上的磁盘数。第二行包含一个包含磁盘原始状态的n位字符串。第三行包含一个n位数字的字符串,这是McDuck打开锁的组合。输出一个整数打开锁所需的最小步数。

eg:

input

82195 
64723
output
13

思路:

主要是往前转还有往后转的问题,判断条件是a[i]-b[i]的绝对值是否大于5

注意:

小编刚刚学code,打code时常常容易犯错误,就这道题来说,小编错在将a,b的数组用int来定义,这样一来,输入样例“82195”时表示的意义是a数组的第一个元素的82195,即a[0]=82195,(除非你输入8 2 1 9 5,即带上空格,才能将int数组的元素分开),所以这道题应该用字符数组or字符串!!!

编代码如下:

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        int ans=0;
        char a[1008],b[1008];
        cin>>a>>b;
        for(int i=0; i<n; i++)
        {
            int t=abs(a[i]-b[i]);
            if(t>5)
                t=10-t;
            ans+=t;
        }
        cout<<ans<<endl;
    }
    return 0;

}

 

posted @   金鳞踏雨  阅读(23)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-05-07 codeforces-1084AThe Fair Nut and Elevator-题解
点击右上角即可分享
微信分享提示