Lagi-lagi Nanda diberi sebuah tantangan. Namun, kali ini tantangannya tidak berasal dari guru Matematika nya, tetapi dari sahabat kakak nya yang sedang belajar mengenai Adder di mata kuliah Sistem Digital. Tantangannya berupa penjumlahan bilangan. Nanda yang jago menghitung, merasa sombong dan langsung menerima tantangan dari sahabat kakaknya tersebut.
Ternyata, bilangan yang diberikan bisa sangat besar, Nanda yang kewalahan meminta tolong kamu sebagai kakak yang baik dan pintar, untuk mengerjakan soal tersebut. Dan karena sebelumnya kamu belum bisa membantu Nanda menyelesaikan soalnya, Nanda sangat berharap agar kali ini permintaan tolong Nanda dapat terpenuhi :)
Format Masukan
Masukan berisi dua buah bilangan A dan B dipisahkan sebuah operasi matematis '+' tiap barisnya sampai dengan EOF.
1 <= A,B <= 10^10000
Format Keluaran
Sebuah bilangan hasil operasi A + B.
Contoh Input :
5 + 6
8 + 4
5040140801236012808012345360123 + 403011012345671701701
80470128012360160123040123410123456710123701234570136012360170123480123440170125012012349011 + 80123401234570150128014020125016012601233012345
Contoh Output :
11
12
5040140801639023820358017061824
80470128012360160123040123410123456710123701314693537246930320251494143565186137613245361356
Lalu Bagaimana Kodingan dengan menggunakan Bahasa C,
Mari kita simak bersama-sama
Mari kita simak bersama-sama
#include <stdio.h>
#include <string.h>
using namespace std;
void revers(char a[], int n){
int i;
char temp;
for (i=0; i<n/2; i++){
temp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = temp;
}
}
int main(){
char input1[100000];
char input2[100000];
int a, b, c, d, p1, p2, i, optr;
gets (input1);
gets (input2);
p1 = strlen(input1);
p2 = strlen(input2);
revers(input1, p1);//strrev(input1);
revers(input2, p2);//strrev(input2);
if (p1>p2){
d = 0;
for (i=0; i<p2; i++){
a = input1[i] - 48;
b = input2[i] - 48;
c = a + b + d;
if (c/10 > 0) d = c/10;
input1[i] = c%10 + 48;
}
for (i=p2; i<p1; i++){
a = input1[i] - 48;
if (i>=p1) a = 0;
b = d;
c = a + b;
if (c/10 > 0){
d = c/10;
input1[i] = c%10 + 48;
}
else break;
}
revers(input1, p1);//strrev(input1);
puts(input1);
}
else if (p1<p2){
d = 0;
for (i=0; i<p1; i++){
a = input1[i] - 48;
b = input2[i] - 48;
c = a + b + d;
if (c/10 > 0) d = c/10;
input2[i] = c%10 + 48;
}
for (i=p1; i<p2; i++){
a = input2[i] - 48;
if (i>=p2) a = 0;
b = d;
c = a + b;
if (c/10 > 0){
d = c/10;
input2[i] = c%10 + 48;
}
else break;
}
revers(input2, p2);//strrev(input2);
puts(input2);
}
else{
d = 0;
for (i=0; i<p1; i++){
a = input1[i] - 48;
b = input2[i] - 48;
c = a + b + d;
if (c/10 > 0) d = c/10;
input2[i] = c%10 + 48;
}
if (d!=0){
input2[i] = d + 48;
input2[i+1] = '\0';
revers(input2, p2+1);
}
else revers(input2, p2);
//strrev(input2);
puts(input2);
}
getchar();
return 0;
}