PROG0162 - Kaprekar numbers

no tags 

Consider an $n$-digit positive integer $k$. Compute its square $k^2$ and subdivide it into two groups of digits: the $n$ digits on the right and the remaining digits on the left. If the sum of both these integers equals $k$ and if $k^2$ has at least two digits, the integer $k$ is called a Kaprekar number. For example, $9$ is a Kaprekar number since $9^2 = 81$ and $8 + 1 = 9$, and $297$ is a Kaprekar number since $297^2 = 88209$ and $88 + 209 = 297$.

Assignment

Write a function isKaprekar that takes a positive integer as an argument. The function must return as its result the value True if the given integer is a Kaprekar number. Otherwise the function must return the value False.

Example

>>> isKaprekar(9)
True
>>> isKaprekar(297)
True
>>> isKaprekar(12)
False
>>> isKaprekar(-33)
False
>>> isKaprekar(4950)
True

Veronderstel dat $k$ een positief geheel getal is bestaande uit $n$ cijfers. Splits de cijfers van het getal $k^2$ op in twee groepen: de $n$ rechtse cijfers en de overige cijfers aan de linkerkant. Indien de som van deze twee getallen gelijk is aan $k$ en indien $k^2$ uit minstens twee cijfers bestaat, dan wordt $k$ een Kaprekargetal genoemd. Zo is $9$ een Kaprekargetal omdat $9^2 = 81$ en $8 + 1 = 9$ en is $297$ een Kaprekargetal omdat $297^2 = 88209$ en $88 + 209 = 297$.

Opgave

Schrijf een functie isKaprekar waaraan een positief geheel getal als argument moet doorgegeven worden. Deze functie moet als resultaat de waarde True teruggeven indien het gegeven getal een Kaprekargetal is. Anders moet de waarde False teruggegeven worden.

Voorbeeld

>>> isKaprekar(9)
True
>>> isKaprekar(297)
True
>>> isKaprekar(12)
False
>>> isKaprekar(-33)
False
>>> isKaprekar(4950)
True


Added by:Peter Dawyndt
Date:2011-08-29
Time limit:10s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None