Умножение без умножения для чисел в диапазоне 10-199, Ведическая математика

condition = range(10,200)
print("This trick only works for range 10 to 199 included")

number1 = int(input("Enter first number:"))
number2 = int(input("Enter second number:"))

def print2(res1, res2):
    res3 = 100+(number1-100)+(number2-100)
    res4 = (number1-100) * (number2 -100)
    print(f""" 
Step 1 : 
{number1} is {number1-100} greater than 100
And
{number2} is {number2-100} greater than 100
Hence, 
The first 2 digits are 100+({number1-100})+({number2-100}) = {res3}
The last digits are {number1-100} * {number2 -100} = {res4}

Total {res1}{res2}
        """)
    

def print1(res1, res2):
    print(f""" 
Step 1 : 
{number1} is {number1-100} greater than 100
And
{number2} is {number2-100} greater than 100
Hence, 
The first 3 digits are 100+({number1-100})+({number2-100}) = {res1}
The last 2 digits are {number1-100} * {number2 -100} = {res2}
Total {res1}{res2}
        """)

def main(number1, number2):

    if number1 in condition and  number2  in condition:
        if  number1 == number2 == 100:
             print(10000)
             
        elif  max(number1, number2) < 100:
            res1 = 100 - (200 - (number1+number2))
            res2 = (number1-100)*(number2-100)
            
            if len(str(res2)) < 2:
                res2 = str(0)+str(res2)
                print1(res1, res2)
            
            elif len(str(res2)) > 2:
                res1 = res1 + int(str(res2)[:-2])
                res2 = str(res2)[-2:]
                print2(res1, res2) 
                
            else:
                res1 = res1
                res2 = str(res2)[-2:]
                print2(res1, res2) 
            
        elif min (number1, number2) > 100:
            res1 = 100 + (number1+number2-200) 
            res2 = (number1-100)*(number2-100)
            
            if len(str(res2)) < 2:
                res2 = str(0)+str(res2)
                print1(res1, res2)
            
            elif len(str(res2)) > 2:
                res1 = res1 + int(str(res2)[:-2])
                res2 = str(res2)[-2:]
                print2(res1, res2)
                
            else:
                print1(res1, res2)
                
            
        else :
            res1 = max(number1, number2) - 100
            res2 = min(number1, number2) - 100
            res3 = int(str(number1 + res2) + "00")
            res4 = res1*res2
            print(f""" 
Step 1 : {max(number1, number2)} - {100} = {res1}
Step 2 : ({number2} + {res1}) + 00 = {res3}
Step 3 : {res1} x {res2} = {res4}
Total 
{res3}+({res4}) = {res3+res4}
""")
        
           
        
    else:
        print("This trick won't work", number1, number2)
        exit(0)
       
main(number1, number2)

Пример 1. Когда числа меньше 100

This trick only works for range 10 to 199 included
Enter first number:56
Enter second number:67

Step 1 :
56 is -44 greater than 100
And
67 is -33 greater than 100
Hence,
The first 2 digits are 100+(-44)+(-33) = 23
The last digits are -44 * -33 = 1452

Total 3752


[Program finished]

Пример 2: Когда больше 100

This trick only works for range 10 to 199 included
Enter first number:110
Enter second number:120

Step 1 :
110 is 10 greater than 100
And
120 is 20 greater than 100
Hence,
The first 2 digits are 100+(10)+(20) = 130
The last digits are 10 * 20 = 200

Total 13200


[Program finished]

Пример 3: один меньше, а другой больше 100

This trick only works for range 10 to 199 included
Enter first number:126
Enter second number:98

Step 1 : 126 - 100 = 26
Step 2 : (98 + 26) + 00 = 12400
Step 3 : 26 x -2 = -52
Total
12400+(-52) = 12348


[Program finished]

Мы не можем изменить вывод, так как дети могут не понимать технический жаргон. Хотя, я признаю, он не так хорошо отформатирован. Я сделал все что мог. Цель состоит в том, чтобы дети пошагово проверяли, где они ошибаются.

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *