#include <iostream>
#include <vector>
#include <sstream>
#include <iomanip> // for setw, setfill
using namespace std;
int binary(int number);
std::string binStr(unsigned int exponent, unsigned int size);
int main()
{
vector<vector<int> > matrix;
cout<<"Please enter the size of the identity matrix"<<endl;
int n;
cin>>n;
// Initialize the matrix
matrix.resize(n);
for (int i=0; i<n;i++)
matrix[i].resize(n);
// Fill the matrix
for (int col = 0; col<n; col++)
{
std::string bin = binStr(n-col,n);
for (int row=0; row<n; row++)
matrix[col][row] = bin[row]-'0';
}
// Print the matrix and return
for(unsigned int y = 0; y < n; y++)
{
for(unsigned int x = 0; x < n; x++)
cout << "\t" << matrix[y][x];
cout << "\n";
}
return 0;
}
std::string binStr(unsigned int exponent, unsigned int size)
{
// You do not need a string stream (which is like using a bazooka to kill a fly...)
// Instead, just create a string of the required length
// 'str' will contain the binary representation of 2^exponent
std::string str(size,'0');
if(exponent <= size && exponent > 0)
str[size - exponent] = '1';
return str;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGlvbWFuaXA+ICAvLyBmb3Igc2V0dywgc2V0ZmlsbAogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKaW50IGJpbmFyeShpbnQgbnVtYmVyKTsKc3RkOjpzdHJpbmcgYmluU3RyKHVuc2lnbmVkIGludCBleHBvbmVudCwgdW5zaWduZWQgaW50IHNpemUpOwogCmludCBtYWluKCkKewogCiAgICB2ZWN0b3I8dmVjdG9yPGludD4gPiBtYXRyaXg7CiAKICAgIGNvdXQ8PCJQbGVhc2UgZW50ZXIgdGhlIHNpemUgb2YgdGhlIGlkZW50aXR5IG1hdHJpeCI8PGVuZGw7CiAgICBpbnQgbjsKICAgIGNpbj4+bjsKIAovLyBJbml0aWFsaXplIHRoZSBtYXRyaXgKICAgIG1hdHJpeC5yZXNpemUobik7CiAgICBmb3IgKGludCBpPTA7IGk8bjtpKyspCiAgICAgICAgbWF0cml4W2ldLnJlc2l6ZShuKTsKCi8vIEZpbGwgdGhlIG1hdHJpeAogICAgZm9yIChpbnQgY29sID0gMDsgY29sPG47IGNvbCsrKQogICAgewogICAgICAgIHN0ZDo6c3RyaW5nIGJpbiA9IGJpblN0cihuLWNvbCxuKTsKICAgICAgICBmb3IgKGludCByb3c9MDsgcm93PG47IHJvdysrKQogICAgICAgICAgICBtYXRyaXhbY29sXVtyb3ddID0gYmluW3Jvd10tJzAnOwogICAgfQogCiAKLy8gUHJpbnQgdGhlIG1hdHJpeCBhbmQgcmV0dXJuCiAgICBmb3IodW5zaWduZWQgaW50IHkgPSAwOyB5IDwgbjsgeSsrKQogICAgewogICAgICAgIGZvcih1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBuOyB4KyspCiAgICAgICAgICAgIGNvdXQgPDwgIlx0IiA8PCBtYXRyaXhbeV1beF07CiAgICAgICAgY291dCA8PCAiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0KIApzdGQ6OnN0cmluZyBiaW5TdHIodW5zaWduZWQgaW50IGV4cG9uZW50LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgLy8gWW91IGRvIG5vdCBuZWVkIGEgc3RyaW5nIHN0cmVhbSAod2hpY2ggaXMgbGlrZSB1c2luZyBhIGJhem9va2EgdG8ga2lsbCBhIGZseS4uLikKICAgIC8vIEluc3RlYWQsIGp1c3QgY3JlYXRlIGEgc3RyaW5nIG9mIHRoZSByZXF1aXJlZCBsZW5ndGgKICAgIC8vICdzdHInIHdpbGwgY29udGFpbiB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIDJeZXhwb25lbnQKICAgIHN0ZDo6c3RyaW5nIHN0cihzaXplLCcwJyk7CiAgICBpZihleHBvbmVudCA8PSBzaXplICYmIGV4cG9uZW50ID4gMCkKICAgICAgICBzdHJbc2l6ZSAtIGV4cG9uZW50XSA9ICcxJzsKICAgIHJldHVybiBzdHI7Cn0=