SPOJ ADDREV Problem
Ich habe die anderen Themen auf diesem @ durchgegang SPOJ Problem, ADDREV (Adding Reversed Numbers), aber leider konnte ich von keinem der drei von mir geschriebenen Programme eine Antwort bekommen (in C, Python und Java). Ich füge die Code-Schnipsel aller drei an.
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
Mit Python erhalte ich einen Laufzeitfehler.
it C bekomme ich eine falsche Antwor
#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;
}
Mit Java erhalte ich einen Kompilierungsfehler.
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;
}
}
}
Natürlich werden diese Fehler vom SPOJ-Richter gemeldet. Die Programme funktionieren auf meinem System einwandfrei. Von mir verwendete Testfälle sind:
2
999999999 11
999 11
Antworte
101
101
Ebenfall
3
34 54
123 091
00034 00054
Aktualisiere: Jungs, ich habe die Antwort in C. Vielen Dank für all die Hilfe.