L1-017 到底有多二

L1-017 到底有多二
分数 15

全屏浏览

切换布局
作者 陈越
单位 浙江大学
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。

输入格式:
输入第一行给出一个不超过50位的整数N。

输出格式:
在一行中输出N犯二的程度,保留小数点后两位。

输入样例:
-13142223336
输出样例:
81.82%

# # a=input()
# # count=0
# # c=0
# # for i in a:
# #     if i =="2":
# #         count+=1
# # b=count/len(int(a))
# # if int(a)<0:
# #     c+=0.5
# # if int(a)%2==0:
# #     c+=1
# # d=b*c*2
# # print("{:.2f}".format(d))


# n=input() #输入的字符串
# c=0
# flag=0
# l=len(n)  #字符串的长度
# for i in n:
#     if i=='2':
#         c+=1
# if n[0]=='-':
#     l-=1
#     flag=1
# t=c/l*100
# if flag==1:
#     t*=1.5
# if int(n[-1])%2==0:
#     t*=2
# print('%.2f%%'%(t))

n=input()
tow=0
flag=1
#负数正数分开讨论
if n[0]=="-":
    for i in n:
        if i=="2":
            tow+=1
        if eval(n)%2==0:
            flag=2
    print("{:.2f}%".format(tow/(len(n)-1)*flag*1.5*100))
else:
    for i in n:
        if i=="2":
            tow+=1
        if eval(n)%2==0:
            flag=2
    print("{:.2f}%".format(tow/(len(n))*flag*100))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值