解题思路:1.首先确定长为w的2^k进制数的最大长度max1
2.通过题目中给的样例,找出位数n和n位数的个数的关系:n位数的个数=(2^k-n+1)*(2^k-n)/2
3.将2到max1位的2^k进制数求和
注意事项:
参考代码:
k,w=map(int,input().split()) total=0 max1=0 if w%k==0: max1=w//k else: max1=w//k+1 for n in range(2,max1+1): temp=(2**k-n+1)*(2**k-n)//2 total+=temp print(total)
0.0分
3 人评分
printf基础练习2 (C语言代码)浏览:648 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:619 |
九宫重排 (C++代码)浏览:2195 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1334 |
printf基础练习2 (C语言代码)浏览:796 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:468 |
数对 (C语言代码)浏览:762 |
蚂蚁感冒 (C语言代码)浏览:1408 |
DNA (C语言代码)浏览:798 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:729 |
bobby 2021-03-20 16:53:41 |
是的,就是数学的排列组合,我也找了好一会儿,但是如果找出来了,代码就很简单了