题目背景
小明的单片机上面的LED显示屏坏掉了,于是他请你来为他修显示屏。 屏幕上可以显示0~9的数字,其中每个数字由7个小二极管组成,各个数字对应的表示方式如图所示:
题目描述
为了排除电路故障,现在你需要计算,将数字A变为数字B需要经过多少次变换? 注意:现在将其中每段小二极管的开和关都定义为一次变换。例如数字1变为2是5次操作。
输入格式
第一行为一个正整数L,表示数码的长度。 接下来两行是两个长度为L的数字A和B,表示要把数字A变成数字B(数字可以以0开头)。
输出格式
一行一个整数,表示这些小二极管一共要变换多少次。
输入输出样例
输入
5
15987
02356
输出
16
说明/提示
【数据范围】 L< =100
解题思路:
用二维数组来模拟每段小二极管,亮就是1,不亮就是0
然后就很简单了
代码如下:
#include <iostream>
using namespace std;
int d[12][12] = {{1,1,1,1,1,1,0},{0,0,1,1,0,0,0},{0,1,1,0,1,1,1},{0,1,1,1,1,0,1},{1,0,1,1,0,0,1},{1,1,0,1,1,0,1},{1,1,0,1,1,1,1},{0,1,1,1,0,0,0},{1,1,1,1,1,1,1},{1,1,1,1,1,0,1}};
char a[110],b[110];int main()
{int n,ans = 0;cin>>n;for (int i = 0;i<n;i++) cin>>a[i];for (int i = 0;i<n;i++) cin>>b[i];for (int i = 0;i<n;i++){int cnt = 0;for (int j = 0;j<7;j++){if (d[a[i]-'0'][j]!=d[b[i]-'0'][j]) cnt++;}ans+=cnt;}cout<<ans<<endl;return 0;
}