#include <iostream> #include <string> #include <ctime> #include <cstdlib> #define NMAX 4000 typedef unsigned char uchar; typedef unsigned int uint; uchar matrix[NMAX][NMAX]; void minit(int n) { for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) if(n < 100) matrix[i][j] = rand()%2; else if(n < 1000 && rand()%3 == 0) matrix[i][j] = 1; else if(rand()%4 == 0) matrix[i][j] = 1; else matrix[i][j] = 0; } void mprint(int n) { char bit; std::cout << n << '\n'; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { bit = matrix[i][j] + '0'; std::cout << bit; } std::cout << '\n'; } } uint msquareones(int n) { uint item, ones; ones = 0U; for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) { item = 0U; for(int k = 0; k < n; k++) item ^= matrix[i][k] & matrix[k][j]; ones += item; } return ones; } int main(int argc, char *argv[]) { int n; srand(time(NULL)); if(argc == 1) std::cin >> n; else n = std::atoi(argv[1]); if(n < 0) return 1; if(n > NMAX) n = NMAX; minit(n); mprint(n); std::cout << msquareones(n) << '\n'; return 0; }
80
80 01001000000001110010001100010000110010010100011110101011010011000011011001010000 01011111010100101001010000100101000111111101100000001011001100000000011100010000 00110000001001100100001001100100110110000100111101101001101110011001001101111001 01011010000000100110001011101101001100110111101110010111000010110000001110010100 10110100100100000111100010111010011001110100111000110111111010011101011001100000 01100101011111010000111010010000110100001111000000000101100100110000001010110111 11111100110111011000010111000111001111000010111111110100000011111010010011000011 10001001001111001101000110010100000100100011111111011010111101101101111110011100 00011110001011100110001100001000101011011101011101101010000000011110010010111001 11110010010110000010110011000011000001010100100101000001001010110011110000000011 01100100010101001111011111101011000010011001100111001110000101101101100001001011 11100010011010101110001011001110001000001010001010010101000101000110111010100001 00110100100100001100010011011010001011100100100010010011011110100001011001011010 01000100111011011101011111001010110100111100001111101010010111110001000010011000 11000100111001111001001110000001010000011100011111111000000011010010010000011101 01010100101011111001101001110100110100110000111001011111101101010000010000011001 10111000110110010000100101111110101000111100100100100110001110000111100111101110 10011110011111001110111001000100101011010011111000110010110000010110001000011101 01001101011011100101111101011011111111010100010000111101011110011100100110111110 11110000110010110111110010111111000000010001110110001011000011111110101101111100 10011101001110101001000111001100111001001100011111001111011100001101100000101010 10011101111111100001000001011010001111001100011111001001110011111001001101101010 10000110010111000010011000111000001110110101101101110010000110010100111110000011 10010110010110001100010110100011010000101111101011010010100111110100111100010111 01100001000111111100011011100010101101010101011101000101111111011100011001001101 00001010010100011111000000011001001010011001011100101101100010111010001001110000 11000011111010100101111110011100000111000001010100010111110000011000100100111100 10111000011011100101001000101100110000101001101110110001011111100110000101011010 00000010101010100000011000110010010010010110000000001101100100111011000011010010 11101100100001101011010000101110000110011011101100011010100011001011110011111101 10011110010110100111011001110111110011011000000110011010101110010111000100110001 00110011110011110100100111011011101100111101010001111110010001111001111011110001 11000110110100010001010101011000101100011001000100000010001101000110111001101111 10010100110010011110100111100111111111000001000101111100010000111010111011110000 11110110000101010101011101001000111101111101100100001000100011000001110010100110 01111110100011111100000101110010000111011010100010001011110010010010011110011010 00010010110010001101010110000011010011001010110000101111001000100001110011100100 01011101101101101000101010111111111001101010110010100001010111100001111110111110 00000100000101101110001010100010110100011001101011001000011010001100101001111111 01111100010111000001010011100010100110111110010011010011100001010001011110111000 10110011011000100001110010000001010011110111101101000101101101000001000011100110 00011100101011001111100011010101100010010110010001111111110110001010111110110110 11000111101001010101110000101100001000010111010010100000010100001111110001100111 00100100100100011100000011001111011001111111111001000101001101000100010101110010 10011011001011011101001110010011011110010100101011101010011010011100110100110110 01001100000000101000100101110011111101101100000100011001110001110000111111111101 10000100000001001010001110011001111101100110010111011101000110001011110101110001 10110100001100100011111000100100011001001111101111100001011111110011111001101110 00100111110001111000110101100100111010101100011111100111011101111010100010011100 01010101010001010111011110101100101101000010010001101000011001010110010001000001 01111110000100001101101101100110011100111101101001111001010001000111110000100000 10110100000000001011111111101001000010101101011111000010110010110110000100001110 00010011111011100000101101101001010011100100010010100010000111010101011101100111 10010110001110011001010001100011010010110001000110111111101100100111100100010001 01011000011100100011011111010010010110100010100111010101100111111100010011000011 10011100101001110110000010010001010100011101010111111011000101000110111011111100 10100110101110111010001100010111101111101110101010010100001010101010111000011110 11101101101100110100010011100000110000100011000110111111001100101100100001111101 01010001000101110111111000100110011010100110001011010111001010011111111100110111 01001111101001100110001001100110000110010111011100100000100111111011010011110000 01000101101000110000001100001111010000011111110011011101010101000011110000111110 00001011110101011100000001111101101001000011110100100001100010000101001110000010 01101110101001010101110010110000110000100000111101010000011011010111101101110110 01010010101001100111100000101011010011000100100110100100101000001000010000010011 00011011001101110010110100100001000101010000110111101101111011111100011011100100 01011000100011110011101010011010001100100001100001111010110001001010000000100000 11111010011011001101101011011000111001100001100110001000101001011001111111101110 10000101101011101110000111000101110100010110110000110100000001110110011011000100 11110010000010011111000110111000110011001100101010001010010010001001011101010111 01111110010110111001110100000100111000000011110010101110010000010100101110101100 01010110000100001011100001001001110100010000101010100000100001110000001011000101 10110101100111011001111010011001010000011000100100011010011101000110111011101110 10100110001000101010101000011010010001000110100001110010011111110110110111101111 10010110101010011110101010010101110101111001000010000001010001100110010010100101 10010011111001000111011010011001000111001101000101000101100000111000100011001011 11010001101101011010001011001100001001111011111000100001100010010110000111000110 00100101001101100000101011001101111111011101011000010110110010100001000100100010 01111010110011111101101110010111000101110101011001110011010101001001110110011111 11111000101111101110111001111110001101111000110011000100110001001101010100111100 00000011011001110100001000011001001010111011100110100000000100010011010010110000 3220