一.火星三进制
火星人用三进制数表示数据,用数字符号@、$、&表示0,1,2,现在输入一个十进制数,请把它用火星三进制表示
输入:
num=123
输出:
“$$$&@”
思路:
先将十进制转为三进制,十进制转三进制为除三取余,再逆序。如123/3=41......0,41/3=13......2,13/3=4....1,4/3=1......1,1/3=0......1
所以123的三进制数为11120,对应火星文为“$$$&@”
def triCoding(num):
res=[]
while(num):
res.append(num%3)
num=num//3
newres=list(reversed(res))
ans=[]
for i in range(len(newres)):
if newres[i]==0:
ans.append('@')
if newres[i]==1:
ans.append('$')
if newres[i]==0:
ans.append('&')
result=''.join(ans)
return result
num=123
print(triCoding(num))
二.逆序五进制(京东笔试)
题目描述
编写一个程序,首先将一个十进制正整数逆序(需要去掉前导0),然后转换成5进制正整数,输出
输入:
1000
输出
1
输入
77267
输出
4420102
思路分析:
先将十进制逆序,再将逆序后的十进制数转为5进制
10进制逆序代码
n=int(input())
sum=0
while(n):
sum=10*sum+n%10
n=n//10
#sum为逆序数
十进制转N进制
#十进制转n进制
def f(n,x):
b=[]
while(n):
b.append(n%x)
n=n//x
b.reverse()
return b
将列表转换为整数输出:
# for count,i in enumerate(reversed(ans)):
# res+=i*(10**count)
# print(res)
#或
ans=[str(x) for x in ans]
print(''.join(ans))
实现代码
#十进制转n进制
def f(n,x):
b=[]
while(n):
b.append(n%x)
n=n//x
b.reverse()
return b
n=int(input())
sum=0
while(n):
sum=10*sum+n%10
n=n//10
#sum为逆序数
res=0
ans=f(sum,5)
# for count,i in enumerate(reversed(ans)):
# res+=i*(10**count)
# print(res)
ans=[str(x) for x in ans]
print(''.join(ans))
三.离质心最近的点
题目描述
找出离质心最近的点,在二维平面有k个点,请找出这k个点离质心最近的编号。质心就是指其横坐标、纵坐标平均值的点。
输入
["1,1","2,2","1,2","1,3"]
输出
2