奧數 python python 來做奧數題

2021-10-12 11:28:47 字數 1909 閱讀 8830

來做幾道小學奧數題:

紅花映綠葉 * 春 = 葉綠映花紅

我們熱愛科學 * 學 = 好好好好好好

少年早立志向 + 少年早立志向 = 有志何懼少年

學生 + 好學生 + 三好學生 = 2004

資料發生器原始碼 [data_generator.py]:

# encoding=utf8

import itertools

class datagenerator(object):

datagenerator:數生成器

def __init__(self, count=6, digitals=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]):

super(datagenerator, self).__init__()

self._count = count

self._digitals = digitals

def get_digitals(self):

return self._digitals

def generate_numbers(self):

獲取定長的由數字組成的數,例如:

_count = 6, 返回所有的可能數字組合,對應的數,對應的逆序數

5 -> [([1, 2, 3, 4, 5], 12345, 54321), [1, 2, 3, 4, 6], 12346, 64321), ...]

all = list(itertools.permutations(self._digitals, self._count))

return [(x,

self._generate_numbers_from_digit_list(x),

self._generate_numbers_from_digit_list(x, true))

for x in all if len(set(x)) == self._count and x[-1] != 0]

def _generate_numbers_from_digit_list(self, digit_list, revert=false):

由乙個數字列表返回對應的數,例如:

[1, 2, 3, 4, 5], false -> 12345

[1, 2, 3, 4, 5], true -> 54321

return sum([digit * 10**index for index, digit in enumerate(digit_list if not revert else digit_list[::-1])])

class numberattr(object):

numberattr:數屬性

def __init__(self, number):

super(numberattr, self).__init__()

self._number = number

def get_digit_by_pos(self, pos):

獲取數某個位置上的數字

1234, 1 -> 4

4321, 1 -> 1

number = self._number

while pos:

(div, mod) = divmod(number, 10)

number = div

pos -= 1

return mod

def get_number_bits(self):

獲取數共有多少位

123 -> 3

4321 -> 4

number = self._number

count = 0

while number:

(div, mod) = divmod(number, 10)

number = div

count += 1

return count

python解奧數題 python 來做奧數題

def init self,count 6,digitals 0,1,2,3,4,5,6,7,8,9 super datagenerator,self init self.count count self.digitals digitals def get digitals self return ...

坑爹的奧數

小風在數學課上遇到一道奧數題是這樣的,3 6528 3 8256,在兩個 內填入相同數字使得等式成立。你可能覺著這個太簡單了!include intmain return0 現在小風遇到了乙個更複雜的題,將數字1 9分別填入9個 中,每個數字只能使用一次使得等式成立。例如173 286 459就是乙...

奧數 找規律 總結

時間限制 1 sec 記憶體限制 128 mb 提交 78 解決 3 提交 狀態 討論版 輸入兩個正整數a,b 1 求在a與b之間的所有正整數 含a,b 中數字d出現的次數 第一行乙個數t 1 t 10000 接下來 t 行每行由 a b d 三個數組成 輸出這組資料a與b之間所有正整數中數字d出現...