{"id":463236,"date":"2025-06-13T11:09:23","date_gmt":"2025-06-13T11:09:23","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=463236"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=463236","title":{"rendered":"<span>\u041d\u0435\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u0438\u043b\u0438 \u041a\u0430\u043a \u044f \u0441\u0447\u0438\u0442\u0430\u043b \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/907160\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/uk\/i_\/5z\/uki_5zflqzmctda3fqede2nalww.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/uk\/i_\/5z\/uki_5zflqzmctda3fqede2nalww.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/uk\/i_\/5z\/uki_5zflqzmctda3fqede2nalww.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/a><\/p>\n<p> \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b: \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u0434 \u2014 \u043d\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0430, \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430 \u0421++, \u0442\u043e \u0440\u0430\u0437\u043d\u043e\u0433\u043e (\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e) \u0440\u043e\u0434\u0430 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u044b \u043c\u043e\u0433\u0443\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0432\u0430\u0441 \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e. <\/p>\n<p> \u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438: \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e uint32_t average(uint32_t a, uint32_t b), \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0438\u043f\u043e\u0432 \u0448\u0438\u0440\u0435, \u0447\u0435\u043c uint32_t, \u0438 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u043e\u0431\u0449\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<a name=\"habracut\"><\/a><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u0435\u0430\u043c\u0431\u0443\u043b\u0430: \u0437\u0430\u0447\u0435\u043c \u044f \u044d\u0442\u0438\u043c \u0432\u0441\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043c\u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u0438\u0430\u043b\u043e\u0433 (\u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0414\u0430\u0432\u0438\u0434\u0443 \u0413\u0438\u043b\u0431\u0435\u0440\u0442\u0443):<\/p>\n<blockquote><p>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a \u0414\u0430\u0432\u0438\u0434 \u0413\u0438\u043b\u0431\u0435\u0440\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b:<br \/> \u2014 \u041a\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u043b\u044f \u043d\u0430\u0443\u043a\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u0430?<br \/> \u2014 \u041f\u043e\u0439\u043c\u0430\u0442\u044c \u043c\u0443\u0445\u0443 \u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u041b\u0443\u043d\u044b!<br \/> \u2014 \u0410 \u043a\u043e\u043c\u0443 \u044d\u0442\u043e \u043d\u0430\u0434\u043e?<br \/> \u2014 \u042d\u0442\u043e \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u043d\u0430\u0434\u043e. \u041d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u043d\u0430\u0434 \u0442\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u0435\u0439\u0448\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u043d\u0430\u0434\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c!<\/p><\/blockquote>\n<p> <\/div>\n<\/p><\/div>\n<p> <\/p>\n<h2><font color=\"#3AC1EF\">\u0414\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/font><\/h2>\n<p> \u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c: \u0432\u0441\u044e\u0434\u0443 \u043f\u043e\u0434 \u0441\u0440\u0435\u0434\u043d\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u044b \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0446\u0435\u043b\u043e \u043d\u0430 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0438\u043d\u0430\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, average(1, 1) \u044d\u0442\u043e 1, \u0438 average(1, 2) \u044d\u0442\u043e \u0442\u043e\u0436\u0435 1, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e<img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/636\/d7e\/fb1\/636d7efb1be05948d833e7f17858855c.svg\" alt=\"$ 3 \/ 2$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/636\/d7e\/fb1\/636d7efb1be05948d833e7f17858855c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/636\/d7e\/fb1\/636d7efb1be05948d833e7f17858855c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0431\u0443\u0434\u0435\u0442 1 \u2014 \u0442\u043e \u0435\u0441\u0442\u044c <b><font color=\"#3AC1EF\">\u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043d\u0438\u0437<\/font><\/b>.<\/p>\n<p> \u0418\u0442\u0430\u043a, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0430\u0438\u0432\u043d\u044b\u0439 \u0438, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439:<\/p>\n<pre><code class=\"cpp\">uint32_t average(uint32_t a, uint32_t b) {     return (a + b) \/ 2; } <\/code><\/pre>\n<p> \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0438\u043b\u0438 \u043d\u0435\u0442, \u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0448\u043a\u043e\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u0432 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: average(0x80000000, 0x80000000) \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e, \u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u043e 0x80000000 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f uint32_t \u043f\u0440\u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0438 a + b, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e <b><font color=\"#3AC1EF\">\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043b\u0435\u0437\u0430\u044e\u0442 \u0432 \u0442\u0438\u043f uint32_t <\/font><\/b>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u0434\u0430\u0447\u0430-\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043a\u043e\u0434\u0430.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0451 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0441 \u0442\u0438\u043f\u043e\u043c uint8_t<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u042d\u0442\u043e \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0438\u0441\u043f\u043e\u0432\u0435\u0434\u043e\u0432\u0430\u043b \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043e\u0431 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445 \u0434\u0435\u043b\u0435\u043d\u0438\u044f: <a href=\"https:\/\/habr.com\/ru\/articles\/833470\/\">\u0442\u0443\u0442 <\/a>\u0438 <a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/836054\/\">\u0442\u0443\u0442<\/a>. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043d\u0430\u0438\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435\u044f\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 int \u0434\u043b\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u043a\u0446\u0438\u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/implicit_conversion\">integral promotions<\/a>. <\/div>\n<\/p><\/div>\n<p> \u041f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0430\u044f \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0438\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043b\u0438\u0448\u044c \u043d\u0430 \u0438\u043d\u0442\u0443\u0438\u0446\u0438\u0438 \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">uint32_t average(uint32_t a, uint32_t b) {     return a \/ 2 + b \/ 2; } <\/code><\/pre>\n<p> \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0442\u0443\u0442, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e a \/2 \u0438 b \/2 \u043d\u0435 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043e\u0442 numeric_limits&lt;uint32_t &gt;::max(), \u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439: average(3, 3) \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d&#8230;2, \u0430 \u043d\u0435 3.<\/p>\n<p> \u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u043e\u0431\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0435\u0447\u0451\u0442\u043d\u044b, \u043f\u0440\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043d\u0430\u0446\u0435\u043b\u043e \u043d\u0430 \u0434\u0432\u0430 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043f\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0435 \u043e\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u043e:<\/p>\n<pre><code class=\"cpp\">uint32_t average(uint32_t a, uint32_t b) {     return a \/ 2 + b \/ 2 + (a &amp; b &amp; 1); } <\/code><\/pre>\n<p> \u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0432\u0435\u0440\u043d\u044b\u0439, \u043d\u043e \u043c\u0435\u0442\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439: \u0434\u043b\u044f \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0442\u0440\u0451\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u043a\u0438, \u0447\u0435\u043c \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0437\u0430\u0439\u043c\u0451\u043c\u0441\u044f.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u0434\u043e\u0442\u043e\u0448\u043d\u044b\u0445<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 <b><font color=\"#3AC1EF\">\u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0434\u0432\u0443\u0445<\/font><\/b> \u0447\u0438\u0441\u0435\u043b, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043d\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \u043e\u0442 underflow, \u0447\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043a\u043e\u0434\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0432\u0443\u0445 \u0447\u0438\u0441\u0435\u043b: <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/f10\/452\/947\/f104529477cbb156dae0a714ac43267f.svg\" alt=\"$a + (b - a) \/ 2$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/f10\/452\/947\/f104529477cbb156dae0a714ac43267f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/f10\/452\/947\/f104529477cbb156dae0a714ac43267f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<p> \u0410 \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u0431\u043e\u0438\u0445 \u0434\u0435\u043b\u0435\u043d\u0438\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0433\u0438\u0438: <\/p>\n<pre><code class=\"cpp\">(a &amp; b) + ((a ^ b) &gt;&gt; 1).<\/code><\/pre>\n<p> \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0431\u043e\u0431\u0449\u0438\u0442\u044c \u044d\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0438\u0441\u0435\u043b \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c. <\/div>\n<\/p><\/div>\n<p> <\/p>\n<h2><font color=\"#3AC1EF\">\u0422\u0440\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/font><\/h2>\n<p> \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0434\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c: \u0434\u043b\u044f \u043f\u0430\u0440\u044b \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b a \u0438 b (b \u043d\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e) \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0430: <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/247\/821\/5ec\/2478215ec2da9ef1e9a0f1242a0e213b.svg\" alt=\"$a = qb + r$\" data-tex=\"display\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/247\/821\/5ec\/2478215ec2da9ef1e9a0f1242a0e213b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/247\/821\/5ec\/2478215ec2da9ef1e9a0f1242a0e213b.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0413\u0434\u0435 <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/eb5\/7b8\/8a2\/eb57b88a2dd8e02007d705cc3de80e92.svg\" alt=\"$q \\ge 0, r\\ge0\\ \u0438\\ r &lt; b$\" data-tex=\"display\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/eb5\/7b8\/8a2\/eb57b88a2dd8e02007d705cc3de80e92.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/eb5\/7b8\/8a2\/eb57b88a2dd8e02007d705cc3de80e92.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0417\u0434\u0435\u0441\u044c q \u2014 \u0447\u0430\u0441\u0442\u043d\u043e\u0435, r \u2014 \u043e\u0441\u0442\u0430\u0442\u043e\u043a, \u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b q \u0438 r, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p> \u0415\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0432\u0441\u0435 \u0442\u0440\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0443\u0447\u0442\u044f, \u0447\u0442\u043e b = 3, \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0445, \u0430 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043c, \u0442\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f (\u043e\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u0435\u0441\u0442 \u0441\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0441\u0443\u043c\u043c\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f), \u0430, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"cpp\">uint32_t average(uint32_t x1, uint32_t x2, uint32_t x3) {     return x1 \/ 3 + x2 \/ 3 + x3 \/ 3  + (x1 % 3 + x2 % 3 + x3 % 3) \/ 3; } <\/code><\/pre>\n<p> \u041f\u0440\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u043e\u0432\u0430\u043c\u0438: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043b\u043e\u0436\u0438\u043c \u0432\u0441\u0435 \u0447\u0430\u0441\u0442\u043d\u044b\u0435, \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c: \u00ab\u0434\u043e\u0431\u0435\u0436\u0430\u043b\u0438 \u043b\u0438\u00bb \u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0434\u043e \u0446\u0435\u043b\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p> \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435? \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \u2014 \u043d\u0435\u0442.<\/p>\n<p> \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e: x1 \/ 3 + x2 \/ 3 + x3 \/ 3 \u043d\u0435 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0438\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f numeric_limits&lt;uint32_t &gt;::max(), \u0430 \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0435\u0449\u0451 \u0442\u043e\u0447\u043d\u0435\u0435: \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437 \u0447\u0438\u0441\u0435\u043b, \u0434\u0435\u043b\u0438\u043c\u044b\u0445 \u043d\u0430 \u0442\u0440\u0438 \u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c numeric_limits&lt;uint32_t &gt;::max(). \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u044f \u0435\u0433\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u044e:<\/p>\n<pre><code class=\"cpp\"> cout &lt;&lt; dec &lt;&lt; numeric_limits&lt;uint32_t&gt;::max() - numeric_limits&lt;uint32_t&gt;::max() % 3 &lt;&lt; ' ' &lt;&lt; numeric_limits&lt;uint32_t&gt;::max() &lt;&lt; endl; <\/code><\/pre>\n<p> \u0412\u044b\u0432\u043e\u0434:<\/p>\n<blockquote><p>4294967295 4294967295<\/p><\/blockquote>\n<p> \u0422\u043e \u0435\u0441\u0442\u044c numeric_limits&lt;uint32_t&gt;::max() \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 3 \u0431\u0435\u0437 \u043e\u0441\u0442\u0430\u0442\u043a\u0430 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u0435\u0440\u0438\u0442\u0435 \u2014 \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0441\u0443\u043c\u043c\u0443 \u0435\u0433\u043e \u0446\u0438\u0444\u0440 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 3), x1 \/ 3 + x2 \/ 3 + x3 \/ 3 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441 \u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u043b\u0435\u0432\u043e\u0439. \u0421\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u0442\u0430\u043a\u0438\u043c\u0438 \u0436\u0435 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u2014 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f.<\/p>\n<h2><font color=\"#3AC1EF\">N \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430<\/font><\/h2>\n<p> \u041e\u0431\u043e\u0431\u0449\u0430\u044f \u043a\u043e\u0434 \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<pre><code class=\"cpp\">uint32_t average(const vector&lt;uint32_t&gt;&amp; nums) {     uint32_t  res = 0;     uint32_t  rem = 0;     uint32_t  size = nums.size();      if (!size)     {         return 0;     }      for (const auto&amp; x: nums)     {         res += x \/ size;     }      for (const auto&amp; x: nums)     {         rem += x % size;     }      return res + rem \/ size; } <\/code><\/pre>\n<p> \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442, \u043f\u0440\u044f\u043c\u043e \u0441\u043a\u0430\u0436\u0435\u043c, \u043d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u043e! \u0410 \u0432\u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438?<\/p>\n<pre><code class=\"cpp\"> cout  &lt;&lt; average({1, 2, 3, 4, 5, 6, 7, 8, 9}) &lt;&lt; endl; <\/code><\/pre>\n<p> \u042d\u0442\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e \u0432\u044b\u0432\u0435\u0434\u0435\u0442 5. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cpp\"> cout  &lt;&lt; hex &lt;&lt;  average(vector&lt;uint32_t&gt;(0x10001, 0x10000)) &lt;&lt; endl; <\/code><\/pre>\n<p> \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u2014 \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442:<\/p>\n<blockquote><p>0<\/p><\/blockquote>\n<p> \u041f\u043e\u0445\u043e\u0436\u0435, \u043c\u044b \u043e\u043f\u044f\u0442\u044c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c, \u043d\u043e \u0432\u0435\u0434\u044c \u0432\u044b\u0448\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442? \u0418\u043b\u0438 \u043c\u043e\u0436\u0435\u0442? <\/p>\n<p> \u041f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0437\u0434\u0435\u0441\u044c:<\/p>\n<pre><code class=\"cpp\">    for (const auto&amp; x: nums)     {         res += x \/ size;     } <\/code><\/pre>\n<p> \u0418 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0437\u0434\u0435\u0441\u044c:<\/p>\n<pre><code class=\"cpp\"> return res + rem \/ size; <\/code><\/pre>\n<p> \u041f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e rem \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. <\/p>\n<p> \u041d\u043e \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0437\u0434\u0435\u0441\u044c:<\/p>\n<pre><code class=\"cpp\">    for (const auto&amp; x: nums)     {         rem += x % size;     } <\/code><\/pre>\n<p> \u041f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c:<\/p>\n<p> x \/ size \u0440\u0430\u0432\u043d\u043e 0, x % size \u0440\u0430\u0432\u043d\u043e \u0441\u0430\u043c\u043e\u043c\u0443 x \u0442.\u0435. 0x10000, \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f 0x10000 * 0x10001 = (0x10000 * 0x10000) + 0x10000 \u2014 \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435 \u043d\u0435 \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 4 \u0431\u0430\u0439\u0442\u0430 \u0438 \u0434\u0430\u0451\u0442 0 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 rem \u0431\u0443\u0434\u0435\u0442 0x10000 \u0438 \u043f\u0440\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 0x10001 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c 0.<\/p>\n<h2><font color=\"#3AC1EF\">N \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0427\u0438\u043d\u0438\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c<\/font><\/h2>\n<p> \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0430\u0431\u0437\u0430\u0446\u0435 \u0431\u044b\u043b\u0430 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0446\u0438\u043a\u043b\u043e\u043c \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0442\u043a\u0430 rem \u2014 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u0443\u0442\u0440\u0443\u0436\u0434\u0430\u044f\u0441\u044c \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438, \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 \u0442\u0440\u0451\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 \u043f\u0443\u0441\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d 8, \u0442\u043e\u0433\u0434\u0430 x % size \u0440\u0430\u0432\u043d\u043e 2. \u0410 \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043c\u044b\u0441\u043b \u0432 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u0442\u043a\u0430? \u041d\u0435\u0442. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0444\u0430\u043a\u0442\u0430, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0438\u043b\u0438 \u0440\u0430\u0432\u0435\u043d \u043c\u043e\u0434\u0443\u043b\u044e (\u043c\u043e\u0434\u0443\u043b\u044c \u2014 \u043e\u043d \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435) \u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u0443\u0436\u0435 \u0432\u0437\u044f\u0442\u043e\u0433\u043e \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e. \u0422\u0430\u043a, \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0448\u0430\u0433\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c rem = 2, \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0448\u0430\u0433\u0435 \u043c\u044b <b><font color=\"#3AC1EF\">\u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c 4<\/font><\/b>, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e rem = 1, \u0438 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0447\u0430\u0441\u0442\u043d\u043e\u0433\u043e (quotient++).<\/p>\n<p> \u0412\u043e\u043f\u043b\u043e\u0442\u0438\u043c \u0438\u0434\u0435\u044e \u0432 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">uint32_t average(const vector&lt;uint32_t&gt;&amp; nums) {     if (!nums.size())     {         return 0;     }          uint32_t size = nums.size();     uint32_t quotient = 0;     uint32_t reminder = 0;          for (const auto&amp; x: nums)     {         quotient += x \/ size;         uint32_t rem = x % size;                  if ((size - reminder) &gt; rem)         {             reminder += rem;         }         else         {             quotient++;             reminder += rem - size;         }     }     return quotient; } <\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c \u0432 if \u043c\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 uint32_t, \u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f (size). \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435\u0442, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u043c \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u2014 \u0438\u043d\u0430\u0447\u0435 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0443\u0436\u0435 \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e (size) \u0438 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0447\u0430\u0441\u0442\u043d\u043e\u0435 (quotient). \u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u0430 \u043e\u0434\u043d\u0443 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u0447\u0430\u0441\u0442\u043d\u043e\u0435 (quotient) \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u043d\u0430 1, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438 reminder, \u0438 rem \u043e\u0431\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u043e\u0434\u0443\u043b\u044f (size) \u2014 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u0445 \u0441\u0443\u043c\u043c\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 2 * size.<\/p>\n<p> \u041c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u043e, \u0432\u044b\u0432\u0435\u0434\u044f 0x10000:<\/p>\n<pre><code class=\"cpp\"> cout  &lt;&lt; hex &lt;&lt;  average(vector&lt;uint32_t&gt;(0x10001, 0x10000)) &lt;&lt; endl; <\/code><\/pre>\n<p> <\/p>\n<h2><font color=\"#3AC1EF\">\u0410\u043d\u0430\u043b\u0438\u0437 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0438 \u0437\u0430\u043c\u0435\u0440\u044b<\/font><\/h2>\n<p> \u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u041e-\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0441\u0432\u043e\u0435\u0439 \u043d\u0430\u0438\u0432\u043d\u043e\u0439 \u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u044e\u0449\u0435\u0439 \u043e\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0432\u0435\u0440\u0441\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">uint32_t naive_average(const vector&lt;uint32_t&gt;&amp; nums) {     uint32_t  sum = 0;          for (const auto&amp; x: nums)     {         sum += x;     }          return sum \/ nums.size(); } <\/code><\/pre>\n<p> \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0440\u0430\u0432\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435, \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0435\u0435 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0438\u0441\u043b\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c O(n). \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 <s>\u0447\u0438\u0441\u0442\u043e\u0433\u0430\u043d\u0430 \u0438 \u043d\u0430\u0436\u0438\u0432\u044b<\/s>, \u0433\u0434\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0435 \u0442\u0430\u043a\u0442\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u2014 \u0442\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0443\u0442 \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u2014 \u0432 \u044d\u0442\u043e\u043c \u043c\u0438\u0440\u0435 \u044d\u0442\u0438 \u0434\u0432\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u0438, \u0435\u0441\u043b\u0438 \u0432 naive_average \u043d\u0430 \u0432\u0435\u0441\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0443 \u043d\u0430\u0441 \u043e\u0434\u043d\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0442\u043e \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u2014 \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0435.<\/p>\n<p> \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430 \u2014 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u0435\u0451 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439.<\/p>\n<pre><code class=\"cpp\">#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;chrono&gt; #include &lt;cstdint&gt; #include &lt;random&gt;  using namespace std; using namespace std::chrono;  uint32_t average(const vector&lt;uint32_t&gt;&amp; nums) {     if (nums.empty()) {         return 0;     }          uint32_t size = nums.size();     uint32_t quotient = 0;     uint32_t reminder = 0;          for (const auto&amp; x : nums) {         quotient += x \/ size;         uint32_t rem = x % size;                  if ((size - reminder) &gt; rem) {             reminder += rem;         } else {             quotient++;             reminder += rem - size;         }     }     return quotient; }  uint32_t naive_average(const vector&lt;uint32_t&gt;&amp; nums) {     uint32_t sum = 0;     for (const auto&amp; x : nums) {         sum += x;     }     return sum \/ nums.size(); }  vector&lt;uint32_t&gt; generate_test_data(size_t size) {     vector&lt;uint32_t&gt; data;     data.reserve(size);     random_device rd;     mt19937 gen(rd());     uniform_int_distribution&lt;uint32_t&gt; dist(0, UINT32_MAX);     for (size_t i = 0; i &lt; size; ++i) {         data.push_back(dist(gen));     }     return data; }  template&lt;typename Func&gt; long long measure_time(Func func, const vector&lt;uint32_t&gt;&amp; data, uint32_t&amp; result) {     auto start = high_resolution_clock::now();     result = func(data);     auto end = high_resolution_clock::now();     return duration_cast&lt;milliseconds&gt;(end - start).count(); }  int main() {     vector&lt;size_t&gt; sizes = {100'000, 200'000, 400'000, 800'000, 1'600'000};          cout &lt;&lt; \"Testing different vector sizes:\\n\";     for (size_t size : sizes) {         auto data = generate_test_data(size);         uint32_t res_opt, res_naive;                  auto time_opt = measure_time(average, data, res_opt);         auto time_naive = measure_time(naive_average, data, res_naive);                  cout &lt;&lt; \"Size: \" &lt;&lt; size &lt;&lt; endl;         cout &lt;&lt; \"  Optimized average:  \" &lt;&lt; time_opt &lt;&lt; \" ms\\t Result: \" &lt;&lt; res_opt &lt;&lt; endl;         cout &lt;&lt; \"  Naive average:      \" &lt;&lt; time_naive &lt;&lt; \" ms\\t Result: \" &lt;&lt; res_naive &lt;&lt; endl;         cout &lt;&lt; \"----------------------------------------\\n\";     }          return 0; } <\/code><\/pre>\n<p> \u0421\u043e\u0431\u0440\u0430\u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0441 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 -O3 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b:<\/p>\n<blockquote><p>Testing different vector sizes:<br \/> Size: 10000000<br \/>  Optimized Average: 14 ms Result: 2147686718<br \/>  Naive average: 2 ms Result: 348<br \/>  \u2014 Size: 20000000<br \/>  Optimized Average: 25 ms Result: 2147422219<br \/>  Naive average: 3 ms Result: 203<br \/>  \u2014 Size: 40000000<br \/>  Optimized Average: 49 ms Result: 2147451718<br \/>  Naive average: 6 ms Result: 67<br \/>  \u2014 Size: 80000000<br \/>  Optimized Average: 103 ms Result: 2147364889<br \/>  Naive average: 13 ms Result: 50<br \/>  \u2014 Size: 160000000<br \/>  Optimized Average: 200 ms Result: 2147464194<br \/>  Naive average: 31 ms Result: 8<br \/>  \u2014 <\/p><\/blockquote>\n<p> \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 7-8 \u0440\u0430\u0437 \u043d\u0430\u0438\u0432\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u043d\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u0430, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043a\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 10 \u0440\u0430\u0437 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br \/> \u0416\u0435\u043b\u0435\u0437\u043e, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438 \u0442\u0435\u0441\u0442\u044b: 13th Gen Intel\u00ae Core(TM) i7-13700H, 32 \u0413\u0431 \u041e\u0417\u0423.<\/p>\n<p> \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b naive_average, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"https:\/\/godbolt.org\/\">godbolt<\/a>, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432 \u043d\u0435\u0439 SIMD-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0432 average \u2014 \u043d\u0435\u0442. \u0412 \u0441\u0432\u0435\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u0433\u0430\u0434\u043e\u0447\u043d\u043e\u0439, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u2014 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0435\u043d\u043e\u043c\u0435\u043d\u0430 \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0430 (\u0438\u043b\u0438 \u0434\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445).<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/35\/nj\/dk\/35njdktjw7y83jz01e8td1glybm.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/35\/nj\/dk\/35njdktjw7y83jz01e8td1glybm.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/35\/nj\/dk\/35njdktjw7y83jz01e8td1glybm.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/18\/zg\/wt\/18zgwtu05yc-hulu68fv5k3wfgu.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/18\/zg\/wt\/18zgwtu05yc-hulu68fv5k3wfgu.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/18\/zg\/wt\/18zgwtu05yc-hulu68fv5k3wfgu.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<h2><font color=\"#3AC1EF\">\u0412\u044b\u0432\u043e\u0434\u044b<\/font><\/h2>\n<p> \u0414\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u0443\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0430\u043a\u0441\u0438\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0431\u0443\u0434\u0443\u0447\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u00ab\u0436\u0435\u043b\u0435\u0437\u0435\u00bb.<\/p>\n<p> \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u044d\u0442\u043e, \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u041a\u0430\u043a \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u0433\u0434\u0435 \u043e\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d, \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0443\u0445\u0443\u0434\u0448\u0435\u043d\u0438\u044e \u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u2014 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<h2><font color=\"#3AC1EF\">\u0421\u0441\u044b\u043b\u043a\u0438<\/font><\/h2>\n<p> <\/p>\n<ul>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/implicit_conversion\">C++ Integral Promotions<\/a><\/li>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/operator_arithmetic#Overflows\">Integer Overflow in C++<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Division_algorithm\">Division Algorithm<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/SIMD\">SIMD Optimization<\/a><\/li>\n<li><a href=\"https:\/\/brilliant.org\/wiki\/modular-arithmetic\/\">Modular Arithmetic Basics<\/a><\/li>\n<\/ul>\n<p> \u00a9 2025 \u041e\u041e\u041e \u00ab\u041c\u0422 \u0424\u0418\u041d\u0410\u041d\u0421\u00bb<\/p>\n<blockquote><p><b><font color=\"#3AC1EF\"><a href=\"https:\/\/t.me\/ruvds_community\">Telegram-\u043a\u0430\u043d\u0430\u043b \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u0430\u043c\u0438, \u0440\u043e\u0437\u044b\u0433\u0440\u044b\u0448\u0430\u043c\u0438 \u043f\u0440\u0438\u0437\u043e\u0432 \u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 IT \ud83d\udcbb<\/a><\/font><\/b><\/p><\/blockquote>\n<p><a href=\"https:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=StarPilgrim&amp;utm_content=nedistributivnost_deleniya_ili_kak_ya_schital_srednyuyu_velichinu\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/kj\/bo\/g6\/kjbog665kffi_jnzlhedkcyhloa.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/kj\/bo\/g6\/kjbog665kffi_jnzlhedkcyhloa.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/kj\/bo\/g6\/kjbog665kffi_jnzlhedkcyhloa.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/a><\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/907160\/\"> https:\/\/habr.com\/ru\/articles\/907160\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/907160\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/uk\/i_\/5z\/uki_5zflqzmctda3fqede2nalww.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/uk\/i_\/5z\/uki_5zflqzmctda3fqede2nalww.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/uk\/i_\/5z\/uki_5zflqzmctda3fqede2nalww.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/a><\/p>\n<p> \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b: \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u0434 \u2014 \u043d\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0430, \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430 \u0421++, \u0442\u043e \u0440\u0430\u0437\u043d\u043e\u0433\u043e (\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e) \u0440\u043e\u0434\u0430 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u044b \u043c\u043e\u0433\u0443\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0432\u0430\u0441 \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e. <\/p>\n<p> \u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438: \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e uint32_t average(uint32_t a, uint32_t b), \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0438\u043f\u043e\u0432 \u0448\u0438\u0440\u0435, \u0447\u0435\u043c uint32_t, \u0438 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u043e\u0431\u0449\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-463236","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/463236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=463236"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/463236\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=463236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=463236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=463236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}