农行笔试-火星三进制、离质心最近的点,京东-逆序五进制

一.火星三进制

火星人用三进制数表示数据,用数字符号@、$、&表示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

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值