//This code using C++
//Code is for who just starting up or already knowing a bit about C++
//This code is used to add, subtract, multiply, divide large numbers like 1e100 or 1e1000
//Code by @banhratlangon (Find me in Discord)
//Enjoy the code :D
#include <bits/stdc++.h>
using namespace std;
string tostring( long long n)
{
string s = "" ;
while ( n ! = 0 )
{
s + = ( char ) ( n % 10 + 48 ) ;
n / = 10 ;
}
return s;
}
bool ss( string a, string b)
{
while ( a[ 0 ] == '0' ) a.erase ( 0 , 1 ) ;
while ( b[ 0 ] == '0' ) b.erase ( 0 , 1 ) ;
if ( a.size ( ) < b.size ( ) ) return true ;
if ( a.size ( ) > b.size ( ) ) return false ;
if ( a < b) return true ;
return false ;
}
string cong( string a, string b)
{
string c = "" ;
int nho = 0 ;
while ( a.size ( ) < b.size ( ) ) a = '0' + a;
while ( a.size ( ) > b.size ( ) ) b = '0' + b;
int n = a.size ( ) ;
for ( int i = n - 1 ; i >= 0 ; i-- )
{
int x = a[ i] + b[ i] - 96 + nho;
nho = x / 10 ;
x % = 10 ;
c = ( char ) ( x + '0' ) + c;
}
if ( nho > 0 ) c = '1' + c;
return c;
}
string tru( string a, string b)
{
bool am = false ;
string c = "" ;
int nho = 0 ;
if ( ss( a, b) )
{
string d = a;
a = b;
b = d;
am = true ;
}
while ( a.size ( ) > b.size ( ) ) b = '0' + b;
int n = a.size ( ) ;
for ( int i = n - 1 ; i >= 0 ; i-- )
{
int x = a[ i] - b[ i] - nho;
if ( x < 0 )
{
x + = 10 ;
nho = 1 ;
}
else nho = 0 ;
c = ( char ) ( x + '0' ) + c;
}
while ( c[ 0 ] == '0' ) c.erase ( 0 , 1 ) ;
if ( am) c = '-' + c;
return c;
}
string nhan1cs( string a, int b)
{
string c = "" ;
int n = a.size ( ) , nho = 0 ;
for ( int i = n - 1 ; i >= 0 ; i-- )
{
int x = ( a[ i] - 48 ) * b + nho;
nho = x / 10 ;
x % = 10 ;
c = ( char ) ( x + 48 ) + c;
}
if ( nho > 0 ) c = ( char ) ( nho + 48 ) + c;
return c;
}
string nhan( string a, string b)
{
string c = "" ;
int n = b.size ( ) , hang = 0 ;
for ( int i = n - 1 ; i >= 0 ; i-- )
{
string x = nhan1cs( a, b[ i] - 48 ) ;
hang++ ;
for ( int i = 0 ; i < hang; i++ ) x + = '0' ;
c = cong( c, x) ;
}
c.erase ( c.size ( ) - 1 , 1 ) ;
return c;
}
string chia( string a, long long b)
{
string c = "" ;
int n = a.size ( ) , x;
long long so = 0 ;
for ( int i = 0 ; i < n; i++ )
{
so = 10 * so + ( a[ i] - 48 ) ;
x = so / b;
so % = b;
c + = ( char ) ( x + 48 ) ;
}
while ( c[ 0 ] == '0' ) c.erase ( 0 , 1 ) ;
return c;
}
int main( )
{
long long d;
string a, b;
cout << "Remember that if you use devide or modulo, the second number\n " ;
cout << "input must be under or equal to 1e18.\n " ;
cout << "Type + or - or * or / or % to start caculation (% is modulo).\n " ;
char cha;
cin >> cha;
if ( cha ! = '+' && cha ! = '-' && cha ! = '*' && cha ! = '/' && cha ! = '%' )
{
cout << "Try again.\n " ;
return 0 ;
}
if ( cha == '+' )
{
cin >> a >> b;
cout << cong( a, b) ;
}
else if ( cha == '-' )
{
cin >> a >> b;
cout << tru( a, b) ;
}
else if ( cha == '*' )
{
cin >> a >> b;
cout << nhan( a, b) ;
}
else if ( cha == '/' )
{
cin >> a >> d;
cout << chia( a, d) ;
}
else
{
cin >> a >> d;
string g = tostring( d) ;
cout << tru( a, nhan( chia( a, d) , g) ) ;
}
}
Ly9UaGlzIGNvZGUgdXNpbmcgQysrIAovL0NvZGUgaXMgZm9yIHdobyBqdXN0IHN0YXJ0aW5nIHVwIG9yIGFscmVhZHkga25vd2luZyBhIGJpdCBhYm91dCBDKysKLy9UaGlzIGNvZGUgaXMgdXNlZCB0byBhZGQsIHN1YnRyYWN0LCBtdWx0aXBseSwgZGl2aWRlIGxhcmdlIG51bWJlcnMgbGlrZSAxZTEwMCBvciAxZTEwMDAKLy9Db2RlIGJ5IEBiYW5ocmF0bGFuZ29uIChGaW5kIG1lIGluIERpc2NvcmQpCi8vRW5qb3kgdGhlIGNvZGUgOkQKCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cmluZyB0b3N0cmluZyhsb25nIGxvbmcgbikKewoJc3RyaW5nIHMgPSAiIjsKCXdoaWxlKG4gIT0gMCkKCXsKCQlzICs9IChjaGFyKSAobiAlIDEwICsgNDgpOwoJCW4gLz0gMTA7Cgl9CglyZXR1cm4gczsKfQoKYm9vbCBzcyhzdHJpbmcgYSwgc3RyaW5nIGIpCnsKICAgIHdoaWxlKGFbMF0gPT0gJzAnKSBhLmVyYXNlKDAsIDEpOwogICAgd2hpbGUoYlswXSA9PSAnMCcpIGIuZXJhc2UoMCwgMSk7CiAgICBpZihhLnNpemUoKSA8IGIuc2l6ZSgpKSByZXR1cm4gdHJ1ZTsKICAgIGlmKGEuc2l6ZSgpID4gYi5zaXplKCkpIHJldHVybiBmYWxzZTsKICAgIGlmKGEgPCBiKSByZXR1cm4gdHJ1ZTsKICAgIHJldHVybiBmYWxzZTsKfQoKc3RyaW5nIGNvbmcoc3RyaW5nIGEsIHN0cmluZyBiKQp7CiAgICBzdHJpbmcgYyA9ICIiOwogICAgaW50IG5obyA9IDA7CiAgICB3aGlsZShhLnNpemUoKSA8IGIuc2l6ZSgpKSBhID0gJzAnICsgYTsKICAgIHdoaWxlKGEuc2l6ZSgpID4gYi5zaXplKCkpIGIgPSAnMCcgKyBiOwogICAgaW50IG4gPSBhLnNpemUoKTsKICAgIGZvcihpbnQgaSA9IG4gLSAxOyBpID49IDA7IGktLSkKICAgIHsKICAgICAgICBpbnQgeCA9IGFbaV0gKyBiW2ldIC0gOTYgKyBuaG87CiAgICAgICAgbmhvID0geCAvIDEwOwogICAgICAgIHggJT0gMTA7CiAgICAgICAgYyA9IChjaGFyKSAoeCArICcwJykgKyBjOwogICAgfQogICAgaWYobmhvID4gMCkgYyA9ICcxJyArIGM7CiAgICByZXR1cm4gYzsKfQoKc3RyaW5nIHRydShzdHJpbmcgYSwgc3RyaW5nIGIpCnsKICAgIGJvb2wgYW0gPSBmYWxzZTsKICAgIHN0cmluZyBjID0gIiI7CiAgICBpbnQgbmhvID0gMDsKICAgIGlmKHNzKGEsIGIpKQogICAgewogICAgICAgIHN0cmluZyBkID0gYTsKICAgICAgICBhID0gYjsKICAgICAgICBiID0gZDsKICAgICAgICBhbSA9IHRydWU7CiAgICB9CiAgICB3aGlsZShhLnNpemUoKSA+IGIuc2l6ZSgpKSBiID0gJzAnICsgYjsKICAgIGludCBuID0gYS5zaXplKCk7CiAgICBmb3IoaW50IGkgPSBuIC0gMTsgaSA+PSAwOyBpLS0pCiAgICB7CiAgICAgICAgaW50IHggPSBhW2ldIC0gYltpXSAtIG5obzsKICAgICAgICBpZih4IDwgMCkKICAgICAgICB7CiAgICAgICAgICAgIHggKz0gMTA7CiAgICAgICAgICAgIG5obyA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgbmhvID0gMDsKICAgICAgICBjID0gKGNoYXIpICh4ICsgJzAnKSArIGM7CiAgICB9CiAgICB3aGlsZShjWzBdID09ICcwJykgYy5lcmFzZSgwLCAxKTsKICAgIGlmKGFtKSBjID0gJy0nICsgYzsKICAgIHJldHVybiBjOwp9CgpzdHJpbmcgbmhhbjFjcyhzdHJpbmcgYSwgaW50IGIpCnsKICAgIHN0cmluZyBjID0gIiI7CiAgICBpbnQgbiA9IGEuc2l6ZSgpLCBuaG8gPSAwOwogICAgZm9yKGludCBpID0gbiAtIDE7IGkgPj0gMDsgaS0tKQogICAgewogICAgICAgIGludCB4ID0gKGFbaV0gLSA0OCkgKiBiICsgbmhvOwogICAgICAgIG5obyA9IHggLyAxMDsKICAgICAgICB4ICU9IDEwOwogICAgICAgIGMgPSAoY2hhcikgKHggKyA0OCkgKyBjOwogICAgfQogICAgaWYobmhvID4gMCkgYyA9IChjaGFyKShuaG8gKyA0OCkgKyBjOwogICAgcmV0dXJuIGM7Cn0KCnN0cmluZyBuaGFuKHN0cmluZyBhLCBzdHJpbmcgYikKewogICAgc3RyaW5nIGMgPSAiIjsKICAgIGludCBuID0gYi5zaXplKCksIGhhbmcgPSAwOwogICAgZm9yKGludCBpID0gbiAtIDE7IGkgPj0gMDsgaS0tKQogICAgewogICAgICAgIHN0cmluZyB4ID0gbmhhbjFjcyhhLCBiW2ldIC0gNDgpOwogICAgICAgIGhhbmcrKzsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgaGFuZzsgaSsrKSB4ICs9ICcwJzsKICAgICAgICBjID0gY29uZyhjLCB4KTsKICAgIH0KICAgIGMuZXJhc2UoYy5zaXplKCkgLSAxLCAxKTsKICAgIHJldHVybiBjOwp9CgpzdHJpbmcgY2hpYShzdHJpbmcgYSwgbG9uZyBsb25nIGIpCnsKICAgIHN0cmluZyBjID0gIiI7CiAgICBpbnQgbiA9IGEuc2l6ZSgpLCB4OwogICAgbG9uZyBsb25nIHNvID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgc28gPSAxMCAqIHNvICsgKGFbaV0gLSA0OCk7CiAgICAgICAgeCA9IHNvIC8gYjsKICAgICAgICBzbyAlPSBiOwogICAgICAgIGMgKz0gKGNoYXIpICh4ICsgNDgpOwogICAgfQogICAgd2hpbGUoY1swXSA9PSAnMCcpIGMuZXJhc2UoMCwgMSk7CiAgICByZXR1cm4gYzsKfQoKCgppbnQgbWFpbigpCnsKICAgIGxvbmcgbG9uZyBkOwogICAgc3RyaW5nIGEsIGI7CiAgICBjb3V0IDw8ICJSZW1lbWJlciB0aGF0IGlmIHlvdSB1c2UgZGV2aWRlIG9yIG1vZHVsbywgdGhlIHNlY29uZCBudW1iZXJcbiI7CiAgICBjb3V0IDw8ICJpbnB1dCBtdXN0IGJlIHVuZGVyIG9yIGVxdWFsIHRvIDFlMTguXG4iOwogICAgY291dCA8PCAiVHlwZSArIG9yIC0gb3IgKiBvciAvIG9yICUgdG8gc3RhcnQgY2FjdWxhdGlvbiAoJSBpcyBtb2R1bG8pLlxuIjsKICAgIGNoYXIgY2hhOwogICAgY2luID4+IGNoYTsKCWlmKGNoYSAhPSAnKycgJiYgY2hhICE9ICctJyAmJiBjaGEgIT0gJyonICYmIGNoYSAhPSAnLycgJiYgY2hhICE9ICclJykKICAgIHsKICAgIAljb3V0IDw8ICJUcnkgYWdhaW4uXG4iOwogICAgCXJldHVybiAwOwogICAgfQogICAgaWYoY2hhID09ICcrJykKICAgIHsKICAgICAgICBjaW4gPj4gYSA+PiBiOwogICAgICAgIGNvdXQgPDwgY29uZyhhLCBiKTsKICAgIH0KICAgIGVsc2UgaWYoY2hhID09ICctJykKICAgIHsKICAgICAgICBjaW4gPj4gYSA+PiBiOwogICAgICAgIGNvdXQgPDwgdHJ1KGEsIGIpOwogICAgfQogICAgZWxzZSBpZihjaGEgPT0gJyonKQogICAgewogICAgICAgIGNpbiA+PiBhID4+IGI7CiAgICAgICAgY291dCA8PCBuaGFuKGEsIGIpOwogICAgfQogICAgZWxzZSBpZihjaGEgPT0gJy8nKQogICAgewogICAgICAgIGNpbiA+PiBhID4+IGQ7CiAgICAgICAgY291dCA8PCBjaGlhKGEsIGQpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGNpbiA+PiBhID4+IGQ7CiAgICAJc3RyaW5nIGcgPSB0b3N0cmluZyhkKTsKICAgIAljb3V0IDw8IHRydShhLCBuaGFuKGNoaWEoYSwgZCksIGcpKTsKICAgIH0KfQo=