{"id":6443,"date":"2021-05-24T06:00:27","date_gmt":"2021-05-24T04:00:27","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=6443"},"modified":"2021-05-31T09:54:22","modified_gmt":"2021-05-31T07:54:22","slug":"el-cociente-por-11-es-igual-a-la-suma-de-los-cuadrados-de-sus-cifras","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/el-cociente-por-11-es-igual-a-la-suma-de-los-cuadrados-de-sus-cifras\/","title":{"rendered":"El cociente por 11 es igual a la suma de los cuadrados de sus cifras"},"content":{"rendered":"<p>El enunciado del problema 1 de la <a href=\"https:\/\/bit.ly\/2RHol2h\">Olimpiada Internacional de Matem\u00e1ticas de 1960<\/a> es el siguiente<\/p>\n<blockquote><p>\n  Encontrar todos los n\u00fameros de tres cifras para los que al dividir el n\u00famero entre 11 se obtiene la suma de los cuadrados de las cifras del n\u00famero inicial.\n<\/p><\/blockquote>\n<p>Diremos que un n\u00famero x es especial si al dividir x entre 11 se obtiene la suma de los cuadrados de las cifras de x.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   esEspecial :: Integer -> Bool\n<\/pre>\n<p>tal que (esEspecial x) se verifica si x es especial. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   esEspecial 550          ==  True\n   esEspecial 22           ==  False\n   esEspecial 241          ==  False\n   esEspecial (11^(10^8))  ==  False\n<\/pre>\n<p>Usando la funci\u00f3n esEspecial, calcular la respuesta al problema de la Olimpiada.<\/p>\n<p>Calculando los n\u00fameros especiales menores que 10\u2076, conjeturar que el conjunto de los n\u00fameros especiales es finito y comprobar la conjetura con QuickCheck.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Test.QuickCheck (Positive(..), quickCheck)\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nesEspecial :: Integer -> Bool\nesEspecial x =\n  x `mod` 11 == 0 &&\n  x `div` 11 == sum (map (^2) (digitos x))\n\n-- head especiales  ==  550\nespeciales :: [Integer]\nespeciales = filter esEspecial [11,22..]\n\n-- (digitos n) es la lista de los d\u00edgitos de n. Por ejemplo,\n--    digitos 325 == [3,2,5]\ndigitos :: Integer -> [Integer]\ndigitos a = [read [c] | c <-show a]\n\n-- C\u00e1lculo de la respuesta\n-- =======================\n\n-- El c\u00e1lculo es\n--    \u03bb> filter esEspecial [100..999]\n--    [550,803]\n-- Por tanto, los n\u00fameros buscados son 550 y 803.\n\n-- Propiedad\n-- =========\n\n-- Observando el siguiente c\u00e1lculo\n--    \u03bb> filter esEspecial [11,22..10^6]\n--    [550,803]\n-- se puede conjeturar que los \u00fanicos n\u00fameros especiales son 550 y\n-- 803. Lo vamos a comprobar con QuickCheck.\n\n-- La propiedad es\nprop_especiales :: Positive Integer -> Bool\nprop_especiales (Positive x) =\n  x `elem` [550,803] || not (esEspecial x)\n\n-- La comprobaci\u00f3n es\n--    \u03bb> quickCheck prop_especiales\n--    +++ OK, passed 100 tests.\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\nesEspecial2 :: Integer -> Bool\nesEspecial2 x = x `elem` [550,803]\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n-- La comparaci\u00f3n es\n--    \u03bb> esEspecial (11^(10^6))\n--    False\n--    (2.22 secs, 4,675,669,056 bytes)\n--    \u03bb> esEspecial2 (11^(10^6))\n--    False\n--    (0.08 secs, 1,334,408 bytes)\n<\/pre>\n<h4>Nuevas soluciones<\/h4>\n<ul>\n<li>En los comentarios se pueden escribir nuevas soluciones.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=&quot;haskell&quot;&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>El enunciado del problema 1 de la Olimpiada Internacional de Matem\u00e1ticas de 1960 es el siguiente Encontrar todos los n\u00fameros de tres cifras para los que al dividir el n\u00famero entre 11 se obtiene la suma de los cuadrados de las cifras del n\u00famero inicial. Diremos que un n\u00famero x es especial si al dividir&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[2],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6443"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=6443"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6443\/revisions"}],"predecessor-version":[{"id":6494,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6443\/revisions\/6494"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=6443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=6443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=6443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}