我确实通过了这个SPOJ问题的其他主题ADDREV(添加反转的数字),但遗憾的是,我无法得到任何答案我编写的三个程序(C,Python和Java)。我附上了这三个代码片段。
的Python:
def find_rev(a):
d=0
while(a>=1):
d=d*10+a%10
a=a/10
return d
n=input('enter a number')
for i in range(int(n)):
num1=input('enter the first number')
num2=input('enter the second number')
num=0
num1=find_rev(int(num1))
num2=find_rev(int(num2))
num=num1+num2
num=find_rev(num)
print num
使用Python,我收到运行时错误。
对于C,我得到了错误的答案。
#include<stdio.h>
long rev(long);
int main()
{
long int n;
long int n1;
long int n2;
long int i=0;
scanf("%ld",&n);
//printf("%d",n);
for (i=0;i<n;i++)
{
//printf("\n%d",i);
//printf("\nenter the two numbers");
scanf("%ld%ld",&n1,&n2);
n = rev(rev(n1)+rev(n2));
printf("%ld\n",n);
}
return 0;
}
long rev(long a)
{
long d=0;
while(a>=1)
{
d = d*10+a%10;
a = a/10;
}
return d;
}
使用Java,我收到编译错误。
import java.util.*;
//import java.io.*;
public class spoj_prob {
public static void main(String args[])
{
long n=0;
System.out.println("enter a number \n");
Scanner in=new Scanner(System.in);
n=in.nextLong();
long n1=0;
long n2=0;
long sum=0;
for (int i=0; i<n; i++)
{
System.out.println("enter two numbers \n ");
n1=in.nextLong();
n2=in.nextLong();
n1=rev(n1);
n2=rev(n2);
System.out.println(n1);
System.out.println(n2);
sum=rev(n1+n2);
System.out.println(sum);
}
}
static long rev(long a)
{
long d=0;
while (a>=1)
{
d=d*10+a%10;
a=a/10;
}
return d;
}
}
}
当然,SPOJ法官报告了这些错误。程序在我的系统上运行良好。我使用的测试用例是:
2
999999999 11
999 11
答案
101
101
另外
3
34 54
123 091
00034 00054
更新:伙计们,我在C 中得到了答案。谢谢你的帮助。
答案 0 :(得分:1)
在开始使用任何服务之前,阅读FAQ通常是一件好事。它解释了程序应该如何接收数据。
请特别注意,将enter a number
和其他垃圾打印到控制台将始终导致错误的答案。因为正确的程序会输出类似
34
1998
1
和你的
enter a number
enter two numbers
34
enter two numbers
1998
enter two numbers
1
我不知道为什么Java无法编译。您可能应该找到一些有关如何使用参考解决方案在Java中提交的信息。
此外,问题定义对输入数字没有限制,因此对于Java和C ++中的标准整数类型,它们可能太大了。
答案 1 :(得分:1)
答案 2 :(得分:0)
在Python 3中尝试此解决方案:
import sys
t = int(input())
i=0
while i<t:
a,b = map(int,sys.stdin.readline().split()) #to take both inputs in single line
c=str(a) #converting the number into string
d=str(b)
e=int(c[::-1]) #converting reverse of the string c to int
f=int(d[::-1]) #converting reverse of the string d to int
s=e+f #adding the two reverse numbers
s1=str(s)
s2=int(s1[::-1]) #reverse s and display it
print(s2)
i+=1