解题思路:找到规律即可
注意事项:主要要注意分段后可能剩下的不能组成k位的数值取值情况
参考代码:
import math
k,w=map(int,input().split())
a=math.ceil(w/k)#ceil函数向上取整,求可以分段的个数
b=w%k#求余数,即每k个分为一段后剩下的个数,例如输入3 7后,二进制形式如* *** ***
c=0
for i in range(1,a):#循环的次数等于位数的种数,例如题目例子里面位数可以为2或者3
if i==a-1:#如果开始考虑取最大位数时的情况,例如题目中取3位数时
for m in range(1,2**b):#循环次数等于最高位取值的个数,题中最高位只有取1一种情况,取值个数=2**位数-1,range中反正也只能取到之前一位不要减一了
for n in range(1,2**k-m-i+1):#到达这一步说明下面的j循环已经结束了,所以从j循环结束时的值开始考虑,即2**k-i开始,然后随着最高位增加而减小
c+=n
else:
for j in range(1,2**k-i):#循环都是从1开始,随着位数增加逐一减小,例如从6+5+4...+1到5+4...+1
c+=j
print(c)
0.0分
1 人评分
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:729 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:783 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:793 |
妹子杀手的故事 (C语言代码)浏览:1297 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:1001 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:568 |
C语言训练-求PI* (C语言代码)浏览:639 |
淘淘的名单 (C语言代码)浏览:1167 |
C语言训练-数字母 (C语言代码)浏览:648 |
大神老白 (C语言代码)浏览:637 |