рдЬрд▓реНрджреА рдпрд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЧреБрдгрд╛ рдХрд░реЗрдВ

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдХреЗ рдЧрдгрд┐рддреАрдп рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд╡рд┐рднрд╛рдЧреЛрдВ рдореЗрдВ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рд╣реИ / рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╕рдорд╛рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ред рдЗрд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдЧрд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рд╣рдорд╛рд░реА рдЖрдВрдЦреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред



рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреВрд░реЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ - рдореИрдВ рд╡рд╣рд╛рдВ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдордЭреВрдВрдЧрд╛ред



рддреЛ рдХрд╛рд░реНрдп: рдбрдмрд▓реНрд╕ рдХреЗ рджреЛ рдмрдбрд╝реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛ (рддреАрд╕рд░реЗ рдХреНрд░рдо рдХреЗ рдЖрдХрд╛рд░реЛрдВ рдореЗрдВ)ред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд░реНрдЧ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрдпрддрд╛рдХрд╛рд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрднреА рднреА рдХрд╣реАрдВ рднреА рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдХреЛ C- рд╕рдВрдЧрдд рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдХреЗрд╡рд▓ cout рдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ)ред



рдореИрдВ рдпрд╣рд╛рдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реИ - рдЬреЛ рд▓реЛрдЧ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╡реЗ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕ рдмрд╛рдд рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрдВрдЧреЗ рдХрд┐ рдЧреБрдгрд╛ рдХреЛ рдХреИрд╕реЗ рддреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдП ...





рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рдЖрдХрд╛рд░ n * n рдХреЗ рдПрдХ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрддреНрд╡ A (i, j) рдХреЛ [i * n + j] рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ-рдЖрдпрд╛рдореА рддреЗрдЬрд╝реА рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЧреБрдгрди рдФрд░ рдПрдХ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рджреЛ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИред



рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рддрд░реАрдХрд╛ рд╣реИ

 int рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрд╕рдмрдб (рдбрдмрд▓ * рдП, рдХреЙрдиреНрд╕реНрдЯ рдЗрдВрдЯ рдПрди, рдбрдмрд▓ * рдмреА, рдбрдмрд▓ * рд╕реА) {
	 int i, j, k;
	 рдХреЗ рд▓рд┐рдП (i = 0; рдореИрдВ <n; i ++) {
		 рдХреЗ рд▓рд┐рдП (j = 0; j <n; j ++) {
			 c [i * n + j] = 0;
			 рдХреЗ рд▓рд┐рдП (k = 0; k <n; k ++) {
				 c [i * n + j] + = a [i * n + k] * b [k * n + j];
			 }
		 }
	 }
	 рд╡рд╛рдкрд╕реА 0;
 }




рдзреНрдпрд╛рди рджреЗрдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрдХреНрд░ рдореЗрдВ рд╣рдо рдХрдИ рдмрд╛рд░ i * n рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░, c [i * n + j] рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдореЗрдореЛрд░реА рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ - рдЖрдк рдЗрд╕ рд╕рдм рдХреЛ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ c [i * n + j] рд╕реЗ рд╕рдорд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рд╕рдВрдХрд▓рдХ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╢рд╛рдЦрд╛ рдмрд┐рдВрджреБрдУрдВ (рдпрджрд┐, рдЖрджрд┐,) рдкрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреА рдЧрд╣рд░рд╛рдИ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреНред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд░реИрдЦрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ (рдЬрдм рдЧрдгрдирд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдерд┐рддрд┐ рдпрд╛ рдЪрдХреНрд░ рдХреЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬрд╛рддреА рд╣реИ) рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдореБрдЦреНрдп рдЪрдХреНрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдПрдХ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ 4 рдЧреБрдгрд╛ рддреАрд╕рд░реЗ рдЪрдХреНрд░ рдХреЗ рдЕрдВрджрд░ рд╣реЛред рдареАрдХ рд╣реИ, рд╣рдо рд╕реНрдореГрддрд┐ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рдФрд░ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдФрд░ рд╕рдВрдХреЗрдд рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрдЪрд╛рдПрдВрдЧреЗ, рдЬреЛ рдХрд╛рдо рдХреЛ рдЧрддрд┐ рднреА рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдореИрдЯреНрд░рд┐рд╕ рдХреЗ рд╕рдо рдФрд░ рд╡рд┐рд╖рдо рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдбрдмрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рд╕рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рди рд╣реЛ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрд╛рдВрдЪ рд▓реЗрдВред рд╣рдореЗрдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ:

 int рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрд╕рдХ (рдбрдмрд▓ * рдП, рдХреЙрдиреНрд╕реНрдЯ рдЗрдВрдЯ рдПрди, рдбрдмрд▓ * рдмреА, рдбрдмрд▓ * рд╕реА) {
	 double s1 = 0, s2 = 0, s3 = 0, s4 = 0;
	 рдбрдмрд▓ * рдПрдл, * рдЬреА, * рдПрдЪ;
	 int i, j, k;
	 рдЕрдЧрд░ (n% 2 == 0) {
		 рдХреЗ рд▓рд┐рдП (i = 0; рдореИрдВ <n-1; рдореИрдВ + = 2)
		 {
			 f = a + i * n;
			 рдХреЗ рд▓рд┐рдП (j = 0; j <n-1; j + = 2)
			 {
				 рдЬреА = рдмреА + рдЬреЗ;
				 рдХреЗ рд▓рд┐рдП (k = 0; k <n; k ++) {
					 s1 + = f [k] * g [n * k];	
					 s2 + = f [n + k] * g [n * k];	
					 s3 + = f [k] * g [n * k + 1];	
					 s4 + = f [n + k] * g [n * k + 1];	
				 }
				 h = c + i * n + j;
				 h [0] = s1;  s1 = 0;
				 h [n] = s2;  s2 = 0;
				 h [рез] = s3;  s3 = 0;
				 h [n + 1] = s4;  s4 = 0;
			 }
		 }
	 }
	 рдФрд░ {
		 рдХреЗ рд▓рд┐рдП (i = 0; рдореИрдВ <n-1; рдореИрдВ + = 2)
			 {
				 f = a + i * n;
				 рдХреЗ рд▓рд┐рдП (j = 0; j <n-1; j + = 2)
				 {
					 рдЬреА = рдмреА + рдЬреЗ;
					 рдХреЗ рд▓рд┐рдП (k = 0; k <n; k ++) {
						 s1 + = f [k] * g [n * k];
						 s2 + = f [n + k] * g [n * k];
						 s3 + = f [k] * g [n * k + 1];
						 s4 + = f [n + k] * g [n * k + 1];
					 }
					 h = c + i * n + j;
					 h [0] = s1;  s1 = 0;
					 h [n] = s2;  s2 = 0;
					 h [рез] = s3;  s3 = 0;
					 h [n + 1] = s4;  s4 = 0;
				 }
				 рдЕрдЧрд░ (j == n-1) {
					 рдЬреА = рдмреА + рдЬреЗ;
					 рдХреЗ рд▓рд┐рдП (k = 0; k <n; k ++) {
						 s1 + = f [k] * g [n * k];	
						 s2 + = f [n + k] * g [n * k];	
					 }
					 h = c + i * n + j;
					 h [0] = s1;  s1 = 0;
					 h [n] = s2;  s2 = 0;
				 }
			 }
			 рдЕрдЧрд░ (i == n-1) {
				 f = a + i * n;
				 рдХреЗ рд▓рд┐рдП (j = 0; j <n-1; j + = 2)
				 {
					 рдЬреА = рдмреА + рдЬреЗ;
					 рдХреЗ рд▓рд┐рдП (k = 0; k <n; k ++) {
						 s1 + = f [k] * g [n * k];	
						 s3 + = f [k] * g [n * k + 1];	
					 }
					 h = c + i * n + j;
					 h [0] = s1;  s1 = 0;
					 h [рез] = s3;  s3 = 0;
				 }
				 рдЕрдЧрд░ (j == n-1) {
					 рдЬреА = рдмреА + рдЬреЗ;
					 рдХреЗ рд▓рд┐рдП (k = 0; k <n; k ++) {
						 s1 + = f [k] * g [n * k];	
					 }
					 h = c + i * n + j;
					 h [0] = s1;  s1 = 0;
				 }
			 }
		 }
	 рд╡рд╛рдкрд╕реА 0;
 }




рдЦреИрд░, рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ред рдЬрдм рд╣рдо рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд░реИрдо рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрдиреА рд╣реЛрддреА рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдЬрдм рд╣рдо рдХреЙрд▓рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ)ред рд░реИрдо рд╕реЗ рдХреИрд╢ рддрдХ, рдЬрд╛рдирдХрд╛рд░реА рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ (рдпрд╛рдиреА рдЬрдм рд╣рдо рдПрдХ рддрддреНрд╡ рдкрдврд╝рддреЗ рд╣реИрдВ - рдЗрд╕рдХреЗ рдмрд╛рдж рдХрдИ рддрддреНрд╡ рдХреИрд╢ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ), рдФрд░ рдЬрдм рд╣рдо рдХреЙрд▓рдо рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ - рддреЛ рд╣рдореЗрдВ рд╣рд░ рдмрд╛рд░ рдореЗрдореЛрд░реА рдореЗрдВ рдЪрдврд╝рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдРрд╕рд╛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╣рдореЗрдВ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛, рдФрд░ рд░реИрдо рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВрдЧреЗ: рд╣рдо рдЕрдкрдиреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд▓рдЧрднрдЧ 100 рд╕реЗ рдЙрдк-рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ 100 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЖрдХрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ)ред рдпрджрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдиреАрдЪреЗ рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕реЗ рдЖрдпрддрд╛рдХрд╛рд░ рдЯреБрдХрдбрд╝реЗ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рдЙрдкрдорд╛рддреНрд░рд╛рдУрдВ A (1,1), ..., A (n, n) рдХреЛ рдХреНрд░рдорд╢рдГ рдХрд╣рддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдмрдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рд╕реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░реЗрдВрдЧреЗред рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдгрд╛ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЬрдм рд╣рдо рджреЛ рдЫреЛрдЯреЗ рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рджреЛрдиреЛрдВ рдХреИрд╢ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдЧреБрдгрди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ "рдПрдХ рд╕рдмрдореЗрдЯреНрд░рд┐рдХреНрд╕ рд▓реЗ рд▓реЛ" рдФрд░ "рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП, рдПрдХ рд╕рдмрдореЗрдЯреНрд░рд┐рдХреНрд╕ рдбрд╛рд▓рд┐рдП" рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп, рд╕рд╛рде рд╣реА рдЖрдпрддрд╛рдХрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпред рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЖрдпрддрд╛рдХрд╛рд░ рдЧреБрдгрди рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬреИрд╕реЗ рдХрд┐ рд╡рд░реНрдЧ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред рдЕрдм рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдпрддрд╛рдХрд╛рд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдп рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рдерд╛, рдФрд░ рд╡рд░реНрдЧ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдЙрдкрдирд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 int рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕рдмреНрд▓реЙрдХ (рдбрдмрд▓ * рдП, рдХреЙрдиреНрд╕реНрдЯ рдЗрдиреНрдЯ рдПрди, рдбрдмрд▓ * рдмреА, рдХрд╛рд╕реНрдЯ рдЗрдВрдЯ рдПрдо, рдбрдмрд▓ * рд░реЗрд╕, рдбрдмрд▓ * рд╕реА, рдбрдмрд▓ * рдбреА, рдбрдмрд▓ * рдИ) {
	 int n_block = n / m;
	 int m_small;
	 int i, j, k, o;
	 m_small = n-n_block * m;
	 clearMatrix (рд░реЗрд╕, рдПрди * рдПрди);
	 рдХреЗ рд▓рд┐рдП (i = 0; рдореИрдВ <= n_block; рдореИрдВ ++)
	 {
		 рдХреЗ рд▓рд┐рдП (j = 0; j <= n_block; j ++)
		 {
			 рдХреЗ рд▓рд┐рдП (k = 0; k <= n_block; k ++)
			 {
				 рдЕрдЧрд░ (i <n_block && j <n_block && k <n_block) {
					 getSubMatrix (рдП, рдПрди, рд╕реА, рдПрдо, рдЖрдИ, рдХреЗ);
					 getSubMatrix (b, n, d, m, k, j);
					 рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрд╕ (рд╕реА, рдПрдо, рдбреА, рдИ);
					 setSubMatrixAdded (рд░реЗрд╕, рдПрди, рдИ, рдПрдо, рдЖрдИ, рдЬреЗ);
				 }
				 рдФрд░ рдЕрдЧрд░ (i <n_block && j <n_block && k == n_block) {
					 getSubMatrix (рдП, рдПрди, рд╕реА, рдПрдо, рдЖрдИ, рдХреЗ);
					 getSubMatrix (b, n, d, m, k, j);
					 рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕Rect (c, m, d, m_small, m, e);
					 setSubMatrixAdded (рд░реЗрд╕, рдПрди, рдИ, рдПрдо, рдЖрдИ, рдЬреЗ);	
				 }
				 рдФрд░ рдЕрдЧрд░ (i == n_block && j <n_block && k <n_block) {
					 getSubMatrix (рдП, рдПрди, рд╕реА, рдПрдо, рдЖрдИ, рдХреЗ);
					 getSubMatrix (b, n, d, m, k, j);
					 рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕Rect (c, m_small, d, m, m, e);
					 setSubMatrixAdded (рд░реЗрд╕, рдПрди, рдИ, рдПрдо, рдЖрдИ, рдЬреЗ);
				 }
				 рдЕрдЧрд░ (i == n_block && j <n_block && k == n_block) {	
					 getSubMatrix (рдП, рдПрди, рд╕реА, рдПрдо, рдЖрдИ, рдХреЗ);
					 getSubMatrix (b, n, d, m, k, j);
					 рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕Rect (c, m_small, d, m_small, m, e);
					 setSubMatrixAdded (рд░реЗрд╕, рдПрди, рдИ, рдПрдо, рдЖрдИ, рдЬреЗ);	
				 }
				 рдФрд░ рдЕрдЧрд░ (i <n_block && j == n_block && k <n_block) {
					 getSubMatrix (рдП, рдПрди, рд╕реА, рдПрдо, рдЖрдИ, рдХреЗ);
					 getSubMatrix (b, n, d, m, k, j);
					 рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕Rect (c, m, d, m, m_small, e);
					 setSubMatrixAdded (рд░реЗрд╕, рдПрди, рдИ, рдПрдо, рдЖрдИ, рдЬреЗ);
				 }
				 рдФрд░ рдЕрдЧрд░ (i <n_block && j == n_block && k == n_block) {
					 getSubMatrix (рдП, рдПрди, рд╕реА, рдПрдо, рдЖрдИ, рдХреЗ);
					 getSubMatrix (b, n, d, m, k, j);
					 рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕Rect (c, m, d, m_small, m_small, e);
					 setSubMatrixAdded (рд░реЗрд╕, рдПрди, рдИ, рдПрдо, рдЖрдИ, рдЬреЗ);
				 }
				 рдФрд░ рдЕрдЧрд░ (i == n_block && j == n_block && k <n_block) {
					 getSubMatrix (рдП, рдПрди, рд╕реА, рдПрдо, рдЖрдИ, рдХреЗ);
					 getSubMatrix (b, n, d, m, k, j);
					 multMatrixRect (c, m_small, d, m, m_small, e);
					 setSubMatrixAdded (рд░реЗрд╕, рдПрди, рдИ, рдПрдо, рдЖрдИ, рдЬреЗ);	
				 }
				 рдФрд░ рдЕрдЧрд░ (i == n_block && j == n_block && k == n_block) {
					 getSubMatrix (рдП, рдПрди, рд╕реА, рдПрдо, рдЖрдИ, рдХреЗ);
					 getSubMatrix (b, n, d, m, k, j);
					 рдорд▓реНрдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрд╕ (рд╕реА, рдПрдо_рд╕реНрдореЙрд▓, рдбреА, рдИ);
					 setSubMatrixAdded (рд░реЗрд╕, рдПрди, рдИ, рдПрдо, рдЖрдИ, рдЬреЗ);	
				 }
			 }
		 }
	 }
	 рд╡рд╛рдкрд╕реА 0;
 }




рд╣рдо рд╣рд┐рд▓реНрдмрд░реНрдЯ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рддрддреНрд╡ рдПрдХрддрд╛ рд╕реЗ рдХрдо рд╣реИрдВ рдФрд░ рдпрд╣ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдХреЛрдИ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред

 рджреЛрд╣рд░рд╛ рдлрд╛рд░реНрдореВрд▓рд╛ (рдЗрдВрдЯ рдореИрдВ, рдЗрдВрдЯ рдЬреЗ, рдЗрдВрдЯ рдПрди) {
	 рд╡рд╛рдкрд╕реА 1 / (рдбрдмрд▓ (i + j + 1));
 }


рдпрд╣рд╛рдВ рдпрд╛ рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда

рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕_test.cpp рдлрд╝рд╛рдЗрд▓:

  g ++ рдореИрдЯреНрд░рд┐рдХреНрд╕_test.cpp -O3 


рдпрд╣рд╛рдВ рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ (рдЖрдИрдореИрдХ рдФрд░ рддреЛрд╢рд┐рдмрд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХрд╛ рдЖрдХрд╛рд░ 200 рд╣реИ, рдпрд╣ рдЗрд╖реНрдЯрддрдо рд▓рдЧрддрд╛ рд╣реИ, рдПрдерд▓реЙрди рдХреЗ рд▓рд┐рдП рдпрд╣ 115 рд╕реЗ рдЕрдзрд┐рдХ рдЗрд╖реНрдЯрддрдо рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдорд╛рддреНрд░рд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рднреА рдпрд╣ рдЦреБрдж рдХреЛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкрдХреНрд╖ рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ):







рдЯреЗрд╕реНрдЯ рдХрдВрдкреНрдпреВрдЯрд░:







рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдмрдврд╝реЛрддрд░реА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ (рд╕рдмрд╕реЗ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ 10 рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рддреНрд╡рд░рдг)ред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рджреЛрд╣рд░реЗ рдХреЛрд░ Core2Duo рдиреЗ рдПрдХ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛рдИ рдереАред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдорд▓реНрдЯреАрдереНрд░реЗрдб рдпрд╛ рдПрдордкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рдирд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ рдФрд░ 1.8-1.9 рдЧреБрдирд╛ рдХреА рд╡реГрджреНрдзрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░рдЧрддрд┐ рдЕрднреА рднреА рдЦрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ 5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕рд┐рд░ рд╕реЗ рдореЙрдбрд▓ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдб рднрдпрд╛рдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдФрд░ рдпрд╣ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рд╡рд┐рдзрд┐ рдЦреБрдж рдирд╣реАрдВ рд╣реИ рдЬреЛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рддрдХрдиреАрдХреЗрдВред




All Articles