Как мне написать программу,чтобы найти ответ A, B, который AAB BB =BAA на python?

#python

Вопрос:

тема: Если A и B являются целыми числами от 1 до 9, попробуйте найти те (A, B) значения, которые могут удовлетворять следующим условиям: AAB BB=BAA

Что я пишу:

 for A in range (1,10):  for B in range(1,10):  if #I have no idea...  print(A,B)  

Комментарии:

1. Как вы добираетесь от B туда BB ? Автор * 11 :. Хочешь BA ? 10 * B A .

2. A*100 A*10 B*10 2*B == B*100 A*10 A ?

3. @PatrickArtner : можно сократить как : 9*A = 8*B

Ответ №1:

Ну что ж, начнем с того, что AAB равно A * 100 A * 10 B .

Примените это к другим, разработайте выражения и проверьте их на равенство.


Например(1), чтобы проверить , ABBA AB ровно на семь больше, чем BBBB , вы могли бы использовать что-то вроде:

 abba = A * 1000   B * 100   B * 10   A # or A * 1001   B * 110 ab = A * 10   B bbbb = B * 1000   B * 100   B * 10   B # or B * 1111  if abba   ab == bbbb   7:  do_something()  

(1) Надеюсь, достаточно близко, чтобы вы могли решить этот вопрос для своего конкретного вопроса, но не настолько близко, чтобы вы могли просто плагиат 🙂

Ответ №2:

Вы можете использовать:

 from itertools import product  [(A,B,f'{A}{A}{B}   {B}{B} = {B}{A}{A}')  for A,B in product(range(1,10), range(1,10))  if A*100 A*10 B B*10 B == B*100 A*10 A]  

выход: [(8, 9, '889 99 = 988')]

Использование классического цикла:

 for A in range(1,10):  for B in range(1,10):  if A*100 A*10 B B*10 B == B*100 A*10 A:  print(f'A={A}, B={B} -gt; {A}{A}{B}   {B}{B} = {B}{A}{A}')  

выход:

 A=8, B=9 -gt; 889   99 = 988  

Комментарии:

1. Вы можете , но, если вы не сможете объяснить это учителю, у вас будут большие проблемы, если предположить, что это классная работа, что кажется вероятным 🙂

2. @paxdiablo Не упоминается, что это задание :p (скорее всего, оно одно, но в соответствии с правилами оно должно быть явно указано)

Ответ №3:

Вы действительно можете упростить это, просто приведя к строкам и обратно к целым числам. Поскольку это достаточно небольшое число n, никаких проблем с производительностью не возникнет.

Вы могли бы применить математику, добавив коэффициенты 10 в соответствующих местах, но для меня это самое очевидное, что происходит.

 for A in range (1, 10):  for B in range(1, 10):  AAB = int(str(A)   str(A)   str(B))  BB = int(str(B)   str(B))  BAA = int(str(B)   str(A)   str(A))  if AAB   BB == BAA:  print(A, B)  

Или с f-строками.

 for A in range (1, 10):  for B in range(1, 10):  AAB = int(f'{A}{A}{B}')  BB = int(f'{B}{B}')  BAA = int(f'{B}{A}{A}')  if AAB   BB == BAA:  print(A, B)  

Комментарии:

1. Должно быть в диапазоне 0,9

2. @PtitXav: вам следует прочитать вопрос более внимательно 🙂 Цифры 1..9 включены.

3. Извините, пропустил это

4. Возможно, было бы лучше использовать f-строки 😉

5. @mozway Да, я люблю f-струны и использую их исключительно во всей своей профессиональной работе. 🙂 Однако я заметил, что новички сторонятся их, поэтому я выбросил первый вариант.

Ответ №4:

Сначала давайте упростим выражение. AAB BB = BAA == 100A 10A B 10B B = 100B 10A A == 99A = 88B == 9A = 8B .

Как видите, мы уже можем предложить правильный ответ ( A должно быть значение B множителя и наоборот).

Но если вам действительно нужно написать какой-то код на Python, вот вам:

 for a in range(1, 10):  for b in range(1, 10):  if a * 9 == b * 8:  print(f'A={a}, B={b}')  

Выход: A=8, B=9