九度 Online Judge 算法 刷题 题目1089:数字反转

时间:2023-02-12 12:44:51

题目1089:数字反转

题目描述:
12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。
输入:
第一行一个正整数表示测试数据的个数n。
只有n行,每行两个正整数a和b(0

code

c语言实现

#include<stdio.h>
#include <stdlib.h>
int fan ( int a) {
    int tem=0;
    while ( a!=0 ) {
        tem = tem*10 +a%10;
        a=a/10;
    }
    return tem;
}
 
int fun( int a,int b ) {
    if (a+b == fan(fan(a) + fan(b)))
        return 1;
    else
        return 0;
}
 
int main() {
    int *p=NULL;
    int n,i=0,a,b;
    scanf ("%d",&n);
    p=(int *)malloc(sizeof(int)*2*n);
    while (i < n) {
        scanf("%d %d",p+i*2,p+i*2+1);
        if (*(p+i*2)<=0 || *(p+i*2) >10000 || *(p+i*2+1)<=0 || *(p+i*2+1)>10000)
            continue;
        else
            i++;
    }
    for (i = 0;i < n*2;i+=2) {
        if (fun(*(p+i),*(p+i+1)) == 1)
            printf("%d\n", *(p+i)+*(p+i+1));
        else
            printf("NO\n");
     
    }
     
    free(p);
    return 0;
}
/**************************************************************
    Problem: 1089
    User: langzimaizan
    Language: C
    Result: Accepted
    Time:0 ms
    Memory:912 kb
****************************************************************/