#include <iostream>
#include <string>
#include <functional>
#include <algorithm>
#include <map>
using namespace std;
int add(int a, int b){
return a+b;
}
auto mod = [](int a, int b){return a%b;};
struct divide{
int operator ()(int a, int b){
return a/b;
}
};
int main()
{
map<string, function<int(int, int)>> m = {
{"+", add},
{"-", minus<int>()},
{"*", [](int a, int b){return a+b;}},
{"/", divide()},
{"%", mod}
};
int i1, i2;
cout<<"please enter two numbers:";
cin>>i1>>i2;
cout<<"+ "<<m["+"](i1, i2)<<endl;
cout<<"- "<<m["-"](i1, i2)<<endl;
cout<<"* "<<m["*"](i1, i2)<<endl;
cout<<"/ "<<m["/"](i1, i2)<<endl;
cout<<"% "<<m["%"](i1, i2)<<endl;
return 0;
}