1426:Find The Multiple
keyword
BFS Python
概要
N<200が与えられたとき、10進表記で0と1しか出てこないような倍数を求める問題。
mod Nだけ考えて枝刈りしつつ探索すればよい。答えが小さいのと多倍長の可能性があるのでPythonで書いてソースに埋め込む。結果的に全てlong longで何とかなっていた。
import sys def solve(n): visited = [False for i in range(n)] cur = [1] while(True): nxt = [] for e in cur: n1, n2 = e*10, e*10+1 if(n1%n == 0): return n1 if(n2%n == 0): return n2 if(not visited[n1%n]): visited[n1%n] = True nxt.append(n1) if(not visited[n2%n]): visited[n2%n] = True nxt.append(n2) cur = nxt for n in range(2,201): sys.stdout.write('%dll, ' % (solve(n)))