一开始把num1,和num2 当成int类型读入 每次分离出一位计算,导致int类型长度不够。后来改为用字符串读入把字符当成数字运算就成功了#include<stdio.h>
#include<math.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d", &n);
char num1[1005],num2[1005];
scanf("%s", &num1);
scanf("%s", &num2);
int i;
int temp;
int sum;
for(i = 0, sum = 0 ; i < n; i++)
{
temp = num1[i] - num2[i];
if(abs(temp) > 5)
sum += (10 - abs(temp));
else
sum += abs(temp);
}
printf("%d\n", sum);
return 0;
}
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d", &n);
char num1[1005],num2[1005];
scanf("%s", &num1);
scanf("%s", &num2);
int i;
int temp;
int sum;
for(i = 0, sum = 0 ; i < n; i++)
{
temp = num1[i] - num2[i];
if(abs(temp) > 5)
sum += (10 - abs(temp));
else
sum += abs(temp);
}
printf("%d\n", sum);
return 0;
}
Description
Scrooge McDuck keeps his most treasured savings in a home safe with a combination lock. Each time he wants to put there the treasures that he's earned fair and square, he has to open the lock.
The combination lock is represented by n rotating disks with digits from 0 to 9 written on them. Scrooge McDuck has to turn some disks so that the combination of digits on the disks forms a secret combination. In one move, he can rotate one disk one digit forwards or backwards. In particular, in one move he can go from digit 0 to digit 9 and vice versa. What minimum number of actions does he need for that?
Input
The first line contains a single integer n (1 ≤ n ≤ 1000) — the number of disks on the combination lock.
The second line contains a string of n digits — the original state of the disks.
The third line contains a string of n digits — Scrooge McDuck's combination that opens the lock.
Output
Print a single integer — the minimum number of moves Scrooge McDuck needs to open the lock.
Sample Input
5 82195 64723
13
Hint
In the sample he needs 13 moves:
- 1 disk:
- 2 disk:
- 3 disk:
- 4 disk:
- 5 disk: