JOI2006模擬試験1 問題5@Python(-57)

前やった時、悔しいので解答見ないとか言ったけど、結局見た。

まさかとは思ったけど、やっぱり同じ素数でバッサリいけるのか!!!

ただし、C++で組み直すのはもはやタルいので、多倍長のPythonで。

#!/usr/bin/python
# -*- coding: utf-8 -*-

from math import *

def search(num, depth):
    if(depth == n):
        for i in xrange(2, int(ceil(sqrt(num)))):
            if(num % i == 0):
                return False
        print "%d" % num
        return True
    for i in xrange(9, -1, -1):
       if(search(num + i * digits[m + n - 1 - depth] + i * digits[depth], depth + 1)):
            return True
    

n, c = [int(x) for x in raw_input().split(' ')]

digits = [10**x for x in xrange(2*n+2)]

m = n
if(c>=0):
    m += 1
    if(not search(c * digits[n], 0)):
        print "%d" % (digits[m + n] - 1)
else:
    if(n == 1):
        search(0, 0)
    else:
        print "%d" % (digits[m + n] - 1)