小乐乐从老师口中听到了二段数这个名词,想更深入的了解二段数。
二段数是这样的正整数:恰好包含两种不同的十进制数字s和t,s不是0,并且s的所有出现均排列在所有的t的前面。例如,44444411是二段数(s是4,t是1),41、10000000和5555556也是。但4444114和44444都不是二段数。
这时老师问小乐乐:给你一个任意的正整数n,你能求出比n大并且是n的倍数的最小二段数吗?请你帮助小乐乐解答这个问题。
小乐乐从老师口中听到了二段数这个名词,想更深入的了解二段数。
二段数是这样的正整数:恰好包含两种不同的十进制数字s和t,s不是0,并且s的所有出现均排列在所有的t的前面。例如,44444411是二段数(s是4,t是1),41、10000000和5555556也是。但4444114和44444都不是二段数。
这时老师问小乐乐:给你一个任意的正整数n,你能求出比n大并且是n的倍数的最小二段数吗?请你帮助小乐乐解答这个问题。
多组输入,每组输入包含一个正整数n (1 ≤ n ≤ 99999)
题目保证测试数据总数不超过500组,当输入n=0时程序结束。
对于每组测试用例,输出正整数n,后面紧跟“: ”,输出答案并换行,即比n大且是n的倍数的最小二段数。
1 2019 0
1: 10 2019: 9999999993
while True:
try:
list=int(input())
if list!=0:
for n in range(2,10000):
test=n*list
str_test=str(test)
s=str_test[0:1]
t=str_test[-1:]
if s==t&nbs***bsp;s==0:
continue
set_test=set()
for letter in str_test:
set_test.add(letter)
if len(set_test)==2:
list_test=[]
flag=True
st=s+t
cnt=str_test.count(st)
if cnt>1:
flag=False
if flag==True:
print("{}:{}".format(list,test))
break
else:
break
except:
break while True:
n=int(input())
if(n==0):
break
flag=0
if n<=50:
for i in range(2,100):
num=n*i
if num>=10:
print("%d: %d"%(n,num))
break
else:
for w in range(len(str(n*2)),100):
if flag:
break
for i in range(1,10):
if flag:
break
for j in range(0,10):
if flag:
break
if i!=j:
for ws in range(1,w):
s=[]
for aw in range(0,ws):
s.append(i)
for bw in range(0,w-ws):
s.append(j)
num=int("".join(map(str,s)))
if (num%n==0)&(num>n):
print("%d: %d"%(n,num))
flag=1
break def f(n):
n = str(n)
l = list(set(n))
if len(l) == 2:
count = 0
a = n[0]
for i in n:
if i != a:
a = i
count += 1
if count != 1:
return True
else:
return False
else:
return True
while True:
a = int(input())
if a == 0:
break
n = 2*a
i = 2
while f(n):
i += 1
n = a*i
print('%d:%d' %(a,n))
超时。。。