给出一个整数。任务是删除一些数字并重新排列数字(如有必要),以使所得的整数成为可以被3整除的最大可能整数。
我的算法是:
如果数字本身可以被3整除,则只需按降序打印数字即可。
如果数字是1模3,则删除整数中也是1模3的最小位数,然后按降序打印数字。如果没有这样的数字,则删除2取模3的两个最小数字,然后按降序打印数字。
如果数字是2模3,则类似于上述情况2。
n = 223
s = str(n)
if n % 3 == 0:
n = "".join(sorted(str(n), reverse=True))
if n % 3 == 1:
n = "".join(sorted(str(n)))
count = 0
for char in s:
if int(char) % 3 == 1:
s = s.replace(char, '', 1)
count+=1
if count != 0:
n = "".join(sorted(s, reverse=True))
print(n)
else:
count2 = 0
while count2 <= 2:
print('l')
for char in s:
if int(char) % 3 == 2:
s = s.replace(char, '', 1)
count2+=1
n = "".join(sorted(s, reverse=True))
print(n)
请注意,我还没有编写案例3的代码部分。我只是检查案例2中的n=223
。
我还不是高级编码器,所以最好进行一些优化(如果可能):)
谢谢。