-
Notifications
You must be signed in to change notification settings - Fork 1
/
ModifiedKaprekarNumbersHR.py
62 lines (39 loc) · 2.37 KB
/
ModifiedKaprekarNumbersHR.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"""
A modified Kaprekar number is a positive whole number with a special property. If you square it, then split the number into two integers and sum those integers, you have the same value you started with.
Consider a positive whole number with digits. We square to arrive at a number that is either digits long or digits long. Split the string representation of the square into two parts, and . The right hand part, must be digits long. The left is the remaining substring. Convert those two substrings back to integers, add them and see if you get .
For example, if , then . We split that into two strings and convert them back to integers and . We test , so this is not a modified Kaprekar number. If , still , and . This gives us , the original .
Note: r may have leading zeros.
Here's an explanation from Wikipedia about the ORIGINAL Kaprekar Number (spot the difference!):
In mathematics, a Kaprekar number for a given base is a non-negative integer, the representation of whose square in that base can be split into two parts that add up to the original number again. For instance, 45 is a Kaprekar number, because 45² = 2025 and 20+25 = 45.
Given two positive integers and where is lower than , write a program to print the modified Kaprekar numbers in the range between and , inclusive.
Function Description
Complete the kaprekarNumbers function in the editor below. It should print the list of modified Kaprekar numbers in ascending order.
kaprekarNumbers has the following parameter(s):
p: an integer
q: an integer
Input Format
The first line contains the lower integer limit .
The second line contains the upper integer limit .
Note: Your range should be inclusive of the limits.
Constraints
Output Format
Output each modified Kaprekar number in the given range, space-separated on a single line. If no modified Kaprekar numbers exist in the given range, print INVALID RANGE.
Sample Input
1
100
Sample Output
1 9 45 55 99
Explanation
, , , , and are the Kaprekar Numbers in the given range.
"""
# SOLUTION
p = int(input())
q = int(input())
result = []
for i in range(p,q+1) :
j = str(int(i*i))
part1 = j[0:int(len(j)/2)] if j[0:int(len(j) / 2)] else 0
part2 = j[int(len(j)/2):int(len(j))] if j[int(len(j)/2):int(len(j))] else 0
if(int(part1) + int(part2) == i) :
result.append(str(i))
print(' '.join(result)) if len(result) > 0 else 'INVALID RANGE')