// DuckWuynh06
// Cầu cho code con không bug
// _oo0oo_
// o8888888o
// 88" . "88
// (| -_- |)
// 0\ = /0
// ___/`---'\___
// .' \| |// '.
// / \||| : |||// \
// / _||||| -:- |||||- \
// | | \ - /// | |
// | \_| ''\---/'' |_/ |
// \ .-\__ '-' ___/-. /
// ___'. .' /--.--\ `. .'___
// ."" '< `.___\_<|>_/___.' >' "".
// | | : `- \`.;`\ _ /`;.`/ - ` : | |
// \ \ `_. \_ __\ /__ _/ .-` / /
// =====`-.____`.___ \_____/___.-`___.-'=====
// `=---='
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ _.-/`)
// / / )
.=// / / / )
//`/ / / / /
// / ` /
|| /
\\ /
)) .'
// /
/
// AMEN
}
uses math,sysutils;
type bigNum=ansistring;
type Num=string;
type data=longint;
type small=integer;
type ssmall=byte;
type ASCII=char;
type huyenthoai=text;
type ojt1=record
val:ssmall;
ch:ASCII;
st:Num;
end;
type ojt=record
null:ojt1;
nill:ojt1;
end;
type obj1=record
suc:ssmall;
cu:ssmall;
bus:ssmall;
end;
type obj=record
wuynh:obj1;
end;
type ob=record
duck:obj;
end;
const
SUCCUBUS=10;
BUSCUSUC=0;
kha='bai3.inp';
bruh='bai3.out';
const
NULL_CONST: ojt = (null:(val: 0;ch: '0';st:'';);nill:(val: 1; ch: '1';st:''));
DUCK_CONST: ob = (duck: (wuynh: (suc: 10; cu: 2;bus:69)));
var thich,cu:bigNum;
bu:Num;
nhac,ke:huyenthoai;
function cmp(a,b:bigNum): small;
begin
while length(a)<length(b) do a:=NULL_CONST.null.ch+a;
while length(b)<length(a) do b:=NULL_CONST.null.ch+b;
if a = b then exit(NULL_CONST.null.val);
if a > b then exit(NULL_CONST.nill.val);
exit(-NULL_CONST.nill.val);
end;
function add(a,b : bigNum): bigNum;
var sum, carry, i, x, y : small;
c : bigNum;
begin
carry:=NULL_CONST.null.val;c:=NULL_CONST.nill.st;
while length(a)<length(b) do a:=NULL_CONST.null.ch+a;
while length(b)<length(a) do b:=NULL_CONST.null.ch+b;
for i:=length(a) downto NULL_CONST.nill.val do
begin
x:= ord(a[i])-ord(NULL_CONST.null.ch);
y:= ord(b[i])-ord(NULL_CONST.null.ch);
sum:=x + y + carry;
carry:=sum div DUCK_CONST.duck.wuynh.suc;
c:=chr(sum mod DUCK_CONST.duck.wuynh.suc + ord(NULL_CONST.null.ch))+c;
end;
if carry>NULL_CONST.null.val then c:=NULL_CONST.nill.ch+c;
add:=c;
end;
function sub(a,b:bigNum):bigNum;
var c :bigNum;
s,borrow,i :small;
begin
borrow:=NULL_CONST.null.val;c:=NULL_CONST.nill.st;
while length(a)<length(b) do a:=NULL_CONST.null.ch+a;
while length(b)<length(a) do b:=NULL_CONST.null.ch+b;
for i:=length(a) downto NULL_CONST.nill.val do
begin
s:=ord(a[i])-ord(b[i])-borrow;
if s<NULL_CONST.null.val then
begin
s:=s+DUCK_CONST.duck.wuynh.suc;
borrow:=NULL_CONST.nill.val;
end else borrow:=NULL_CONST.null.val;
c:=chr(s+ord(NULL_CONST.null.ch))+c;
end;
while (length(c)>NULL_CONST.nill.val)and(c[NULL_CONST.nill.val]=NULL_CONST.null.ch) do delete(c,NULL_CONST.nill.val,NULL_CONST.nill.val);
sub:=c;
end;
function multiply1(a:bigNum;b:data):bigNum;
var i :small;
carry,s :data;
c,tmp :bigNum;
begin
c:=NULL_CONST.nill.st;
carry:=NULL_CONST.null.val;
for i:=length(a) downto NULL_CONST.nill.val do
begin
s:=(ord(a[i])-ord(NULL_CONST.null.ch)) * b + carry;
carry:= s div DUCK_CONST.duck.wuynh.suc;
c:=chr(s mod DUCK_CONST.duck.wuynh.suc + ord(NULL_CONST.null.ch))+c;
end;
if carry>NULL_CONST.null.val then str(carry,tmp) else tmp:=NULL_CONST.nill.st;
multiply1:=tmp+c;
end;
function multiply2(a,b:bigNum):bigNum;
var sum,tmp :bigNum;
m,i,j :small;
begin
m:=-NULL_CONST.nill.val;sum:=NULL_CONST.nill.st;
for i:=length(a) downto NULL_CONST.nill.val do
begin
m:=m+NULL_CONST.nill.val;
tmp:=multiply1(b,ord(a[i])-ord(NULL_CONST.null.ch));
for j:=NULL_CONST.nill.val to m do tmp:=tmp+NULL_CONST.null.ch;
sum:=add(tmp,sum);
end;
multiply2:=sum;
end;
function bigDiv1(a:bigNum;b:data):bigNum;
var s,i,hold:data;
c:bigNum;
begin
hold:=NULL_CONST.null.val;s:=NULL_CONST.null.val; c:=NULL_CONST.nill.st;
for i:=NULL_CONST.nill.val to length(a) do
begin
hold:=hold*DUCK_CONST.duck.wuynh.suc+ord(a[i])-ord(NULL_CONST.null.ch);
s:=hold div b;
hold:=hold mod b;
c:=c+chr(s+ord(NULL_CONST.null.ch));
end;
while (length(c)>NULL_CONST.nill.val) and(c[NULL_CONST.nill.val]=NULL_CONST.null.ch) do
delete(c,NULL_CONST.nill.val,NULL_CONST.nill.val);
bigDiv1:=c;
end;
function bigMod1(a:bigNum;b:data):longint;
var i,hold:data;
begin
hold:=NULL_CONST.null.val;
for i:=NULL_CONST.nill.val to length(a) do
hold:=(ord(a[i])-ord(NULL_CONST.null.ch)+hold*DUCK_CONST.duck.wuynh.suc) mod b;
bigMod1:=hold;
end;
function bigDiv2(a,b:bigNum):bigNum;
var c,hold :bigNum;
kb :array[BUSCUSUC..SUCCUBUS]of bigNum;
i,k :longint;
begin
kb[NULL_CONST.null.val]:=NULL_CONST.null.ch;
for i:=NULL_CONST.nill.val to DUCK_CONST.duck.wuynh.suc do
kb[i]:=add(kb[i-NULL_CONST.nill.val],b);
hold:=NULL_CONST.nill.st;
c:=NULL_CONST.nill.st;
for i:=NULL_CONST.nill.val to length(a) do
begin
hold:=hold+a[i];
k:=NULL_CONST.nill.val;
while cmp(hold,kb[k])<>-NULL_CONST.nill.val do
inc(k);
c:=c+chr(k-NULL_CONST.nill.val+ord(NULL_CONST.null.ch));
hold:=sub(hold,kb[k-NULL_CONST.nill.val]);
end;
while (length(c)>NULL_CONST.nill.val)and(c[NULL_CONST.nill.val]=NULL_CONST.null.ch) do delete(c,NULL_CONST.nill.val,NULL_CONST.nill.val);
bigDiv2:=c;
end;
function bigMod2(a,b:bigNum):bigNum;
var hold :bigNum;
kb :array[BUSCUSUC..SUCCUBUS]of bigNum;
i,k :data;
begin
kb[NULL_CONST.null.val]:=NULL_CONST.null.ch;
for i:=NULL_CONST.nill.val to DUCK_CONST.duck.wuynh.suc do
kb[i]:=add(kb[i-NULL_CONST.nill.val],b);
hold:=NULL_CONST.nill.st;
for i:=NULL_CONST.nill.val to length(a) do
begin
hold:=hold+a[i];
k:=NULL_CONST.nill.val;
while cmp(hold,kb[k])<>-NULL_CONST.nill.val do
inc(k);
hold:=sub(hold,kb[k-NULL_CONST.nill.val]);
end;
bigMod2:=hold;
end;
function cs2(n:bigNum):bigNum;
var s,c:bigNum;
begin
s:=NULL_CONST.nill.st;
while n<>NULL_CONST.null.ch do
begin
str(bigMod1(n,DUCK_CONST.duck.wuynh.cu),c);
s:=c+s;
n:=bigDiv1(n,DUCK_CONST.duck.wuynh.cu);
end;
exit(s);
end;
Procedure anhhoangtocnhucailonkhit;
Begin
Assign(nhac,kha);
Reset(nhac);
Assign(ke,bruh);
Rewrite(ke);
End;
Procedure anhduckwuynhdeptraikhoaitoso1thegioi;
Begin
readln(thich);
readln(bu);
readln(cu);
case bu of
'cong': write(cs2(add(thich,cu)));
'tru': write(cs2(sub(thich,cu)));
'nhan': write(cs2(multiply2(thich,cu)));
'chia': write(cs2(bigDiv2(thich,cu)));
end;
end;
Procedure noithatdaydeoduadau;
Begin
Close(nhac);
Close(ke);
End;
begin
anhhoangtocnhucailonkhit;
anhduckwuynhdeptraikhoaitoso1thegioi;
noithatdaydeoduadau;
end.