#include <iostream>
using namespace std;
class MyVector
{
public:
double x, y, z;
MyVector& operator *= (double c)
{
x *= c;
y *= c;
z *= c;
return *this;
}
};
MyVector operator*(const MyVector &v, double c) {
MyVector temp(v);
temp *= c;
return temp;
}
MyVector operator*(double c, const MyVector &v) {
return v*c; // using MyVector operator*(const MyVector &v, double c)
}
ostream& operator<<(ostream&os, const MyVector& v) {
return os << '{' << v.x << ',' << v.y << ',' << v.z << '}';
}
int main() {
MyVector v; v.x=1; v.y=2; v.z=3;
MyVector v1 = v*2;
cout << v1 << endl;
MyVector v2 = 2*v;
cout << v2 << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmNsYXNzIE15VmVjdG9yCnsKcHVibGljOgogICAgZG91YmxlIHgsIHksIHo7CiAgICBNeVZlY3RvciYgb3BlcmF0b3IgKj0gKGRvdWJsZSBjKQogICAgewogICAgICAgIHggKj0gYzsKICAgICAgICB5ICo9IGM7CiAgICAgICAgeiAqPSBjOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KfTsKCk15VmVjdG9yIG9wZXJhdG9yKihjb25zdCBNeVZlY3RvciAmdiwgZG91YmxlIGMpIHsKICBNeVZlY3RvciB0ZW1wKHYpOwogIHRlbXAgKj0gYzsKICByZXR1cm4gdGVtcDsKfQoKTXlWZWN0b3Igb3BlcmF0b3IqKGRvdWJsZSBjLCBjb25zdCBNeVZlY3RvciAmdikgewogIHJldHVybiB2KmM7IC8vIHVzaW5nIE15VmVjdG9yIG9wZXJhdG9yKihjb25zdCBNeVZlY3RvciAmdiwgZG91YmxlIGMpCn0KCm9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSZvcywgY29uc3QgTXlWZWN0b3ImIHYpIHsKICByZXR1cm4gb3MgPDwgJ3snIDw8IHYueCA8PCAnLCcgPDwgdi55IDw8ICcsJyA8PCB2LnogIDw8ICd9JzsKfQoKaW50IG1haW4oKSB7CglNeVZlY3RvciB2OyB2Lng9MTsgdi55PTI7IHYuej0zOwogICAgCiAgICBNeVZlY3RvciB2MSA9IHYqMjsKICAgIGNvdXQgPDwgdjEgPDwgZW5kbDsKICAgIE15VmVjdG9yIHYyID0gMip2OwogICAgY291dCA8PCB2MiA8PCBlbmRsOwp9