1~9的9个数字, 每个数字只能出现一次, 要求这样的9位数:其第一位能被1整除, 前两位能被2整除, 前三位能被3整除…依次类推,前9位能被9整除。所有的9位数中,只有一个数字满足这些条件,请你输出这个9位数。
思路:
根据描述写出函数,判断重复,缩小范围
#!/usr/bin/env python #-*- coding:utf-8 -*- def no_repeat(my_num): uniq_str=''.join(set(str(my_num))) if len(str(my_num)) == len(uniq_str): return True def possible(prefix): possible_list = [] number_len = len(str(prefix)) + 1 for i in range(10*prefix + 1, 10*(prefix+1)): if (i % number_len == 0) and no_repeat(i) and (number_len<9): possible(i) elif (i % number_len == 0) and no_repeat(i) and number_len == 9: print i def main(): for i in range(1,10): possible(i) if __name__ == "__main__": main()
Leave a Reply