#include <iostream>
#include <vector>
class Table
{
public:
Table(int row, int col)
: mRow(row), mCol(col)
{
mTable.resize(row, std::vector<int>(col, 0));
}
int Row() const { return mRow; }
int Col() const { return mCol; }
void SetEntry(int row, int col, int value) { mTable[row][col] = value; }
int GetEntry(int row, int col) const { return mTable[row][col]; }
void Print() const
{
for (auto &rowVector : mTable)
{
std::cout << "|";
for (auto &entry : rowVector)
{
std::cout << " " << entry;
}
std::cout << " |\n";
}
}
private:
int mRow;
int mCol;
std::vector<std::vector<int>> mTable;
};
void SetTableToRowColMultiplication(Table &table)
{
for (auto row=0; row<table.Row(); ++row)
{
for (auto col=0; col<table.Col(); ++col)
{
table.SetEntry(row, col, (row+1)*(col+1));
}
}
}
int main()
{
Table t(9, 9);
t.Print();
std::cout << "======\n";
SetTableToRowColMultiplication(t);
t.Print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgVGFibGUKewpwdWJsaWM6CglUYWJsZShpbnQgcm93LCBpbnQgY29sKQoJCTogbVJvdyhyb3cpLCBtQ29sKGNvbCkKCXsKCQltVGFibGUucmVzaXplKHJvdywgc3RkOjp2ZWN0b3I8aW50Pihjb2wsIDApKTsKCX0KCQoJaW50IFJvdygpIGNvbnN0IHsgcmV0dXJuIG1Sb3c7IH0KCWludCBDb2woKSBjb25zdCB7IHJldHVybiBtQ29sOyB9Cgl2b2lkIFNldEVudHJ5KGludCByb3csIGludCBjb2wsIGludCB2YWx1ZSkgeyBtVGFibGVbcm93XVtjb2xdID0gdmFsdWU7IH0KCWludCBHZXRFbnRyeShpbnQgcm93LCBpbnQgY29sKSBjb25zdCB7IHJldHVybiBtVGFibGVbcm93XVtjb2xdOyB9CgkKCXZvaWQgUHJpbnQoKSBjb25zdAoJewoJCWZvciAoYXV0byAmcm93VmVjdG9yIDogbVRhYmxlKQoJCXsKCQkJc3RkOjpjb3V0IDw8ICJ8IjsKCQkJZm9yIChhdXRvICZlbnRyeSA6IHJvd1ZlY3RvcikKCQkJewoJCQkJc3RkOjpjb3V0IDw8ICIgIiA8PCBlbnRyeTsKCQkJfQoJCQlzdGQ6OmNvdXQgPDwgIiB8XG4iOwoJCX0KCX0KCQpwcml2YXRlOgogICAgaW50IG1Sb3c7CiAgICBpbnQgbUNvbDsKCXN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGludD4+IG1UYWJsZTsKfTsKCnZvaWQgU2V0VGFibGVUb1Jvd0NvbE11bHRpcGxpY2F0aW9uKFRhYmxlICZ0YWJsZSkKewoJZm9yIChhdXRvIHJvdz0wOyByb3c8dGFibGUuUm93KCk7ICsrcm93KQoJewoJCWZvciAoYXV0byBjb2w9MDsgY29sPHRhYmxlLkNvbCgpOyArK2NvbCkKCQl7CgkJCXRhYmxlLlNldEVudHJ5KHJvdywgY29sLCAocm93KzEpKihjb2wrMSkpOwoJCX0KCX0KfQoKaW50IG1haW4oKQp7CglUYWJsZSB0KDksIDkpOwoJdC5QcmludCgpOwoJc3RkOjpjb3V0IDw8ICI9PT09PT1cbiI7CglTZXRUYWJsZVRvUm93Q29sTXVsdGlwbGljYXRpb24odCk7Cgl0LlByaW50KCk7CglyZXR1cm4gMDsKfQ==