题目:
对于n位的两个正整数x和y,可以把x表示为x1x2…xn,其中xi(1≤i≤n)表示整数x第i位上的数字;把y表示为y1y2…yn,其中yi(1≤i≤n)表示整数y第i位上的数字。如果x1+k=yn−k(0≤k≤n−1)始终成立,则x和y互为逆序整数。
给你两个正整数A和B, 判断两个整数是否互为逆序整数,并输出相应的结果。
注:题目保证正整数A和B的个位数字不是0。
解答:
#include <math.h>
#include <stdio.h>
int main() {
int A, B, n, a[50], b[50], i, flag = 0;
scanf("%d%d%d", &n, &A, &B);
if (A % 10 == 0 || B % 10 == 0)
return 0;
a[0] = A % 10;
b[0] = B % 10;
for (i = 1; i < n; i++) {
a[i] = A % (int)pow(10, i + 1) / pow(10, i);
}
for (i = 1; i < n; i++)
b[i] = B % (int)pow(10, i + 1) / pow(10, i);
for (i = 0; i < n; i++) {
if (a[i] != b[n - i - 1]) {
flag = 1;
printf("%d and %d are not reverse", A, B);
break;
}
}
if (flag == 0)
printf("%d and %d are reverse", A, B);
return 0;
}
亮点分析:
循环语句中使用flag变量