您的位置:首页 > 编程语言 > C语言/C++

题目1089:数字反转 (分别用C++/Java实现)

2015-04-01 21:32 246 查看
题目描述:
12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。

输入:
第一行一个正整数表示测试数据的个数n。

只有n行,每行两个正整数a和b(0<a,b<=10000)。

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

样例输入:
2
12 34
99 1


样例输出:
46
NO


来源:
#include <iostream>
using namespace std;
int r(int a)
{
int temp=0;
int x;
while (a)
{
temp=temp*10+a%10;
a/=10;
}
return temp;
}
int main()
{
int n;
int a[10000],b[100000];
int i,j;
while (cin>>n)
{
for (i=0;i<n;i++)
{
cin>>a[i]>>b[i];
}
for(j=0;j<i;j++)
{
if (a[j]+b[j]==r(r(a[j])+r(b[j])))
{
cout<<a[j]+b[j]<<endl;
}
else
cout<<"NO"<<endl;
}
}
return 1;
}
/**************************************************************
Problem: 1089
User: Carvin
Language: C++
Result: Accepted
Time:0 ms
Memory:1876 kb
****************************************************************/
Java代码:
<pre name="code" class="java">import java.util.Scanner;

public class Main{
public static void main(String args[])
{
Scanner cin =new Scanner(System.in);
int []a=new int[1000];
int []b=new int[1000];
int []sum=new int[1000];
int i=0,N;
while(cin.hasNext())
{
N=cin.nextInt();
for(i=0;i<N;i++)
{
a[i]=cin.nextInt();
b[i]=cin.nextInt();
sum[i]=a[i]+b[i];
}
for(i=0;i<N;i++)
{
if(sum[i]==a(a(a[i])+a(b[i])))
{
System.out.println(sum[i]);
}
else {
System.out.println("NO");
}
}

}
}

public static int a(int x)
{
int temp=0;
while(x!=0)
{
temp=temp*10+x%10;
x/=10;
}
return temp;
}
}
/**************************************************************
Problem: 1089
User: Carvin
Language: Java
Result: Accepted
Time:80 ms
Memory:15472 kb
****************************************************************/



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: