首页 > 试题广场 >

数字反转

[编程题]数字反转
  • 热度指数:9826 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。

输入描述:
每行两个正整数a和b(0<a,b<=10000)。


输出描述:
    如果满足题目的要求输出a+b的值,否则输出NO。
示例1

输入

12 34
99 1

输出

46
NO
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <malloc.h>

int reverse(int n)
{
    int s=0;
    int i=0;
    int num[100];
    while(n>0)
    {
        num[i]=n%10;
        n=n/10;
        i++;
    }
    for(int j=0;j<i;j++)
    {
        s=s+num[i-1-j]*pow(10,j);
    }
    return s;
}

int main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)!=EOF)
    {
        int a1=reverse(a);
        int b1=reverse(b);
        int sum1=a1+b1;
        int s=a+b;
        int sum=reverse(s);
        if(sum==sum1)
        {
            printf("%d\n",s);
        }else{
            printf("NO\n");
        }
    }
    return 0;
}
发表于 2022-02-27 14:22:11 回复(0)
//ky97数字反转
#include<stdio.h>

int Rev(int a){
	int i=0;
	int tar=0;
	while(a!=0){
		tar+=tar*10+a%10;
		a/=10;
	}
	return tar;
}

int main(){
	int a,b;
	while(scanf("%d %d",&a,&b)!=EOF){
		if(Rev(a)+Rev(b)==Rev(a+b))
			printf("%d",a+b);
		else
			printf("NO");
		printf("\n");
	}
}

发表于 2022-01-29 21:02:40 回复(0)

问题信息

难度:
2条回答 10712浏览

热门推荐

通过挑战的用户

查看代码
数字反转