解题思路:我的方法就是上来就把几种可能罗列出来,然后找规律,这种方法可能巨慢(反正我想了半天)
注意事项:以r转换为二进制后的最少位数开始,可能的次数为(2^k-2)+(2^k-3)+...+1,其中相加的数一共有2^k-2个(也就是内循环为2^k-2次),然后再往前加一位(从右往左),一直加到w(外循环),每加一位次数少1
参考代码:
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=1,s=0,i,j,m=1;
int k=sc.nextInt();
int w=sc.nextInt();
if(k==1){
s=1;
}//当k为1时,为2进制,r只有一种可能
else{
for(i=0;i<k;i++){
n=n*2;
}//判断进制数
for(i=0;i<w-2*k;i++){
m=m*2;
}//2*k是当前进制转换为2进制后的最低位数(比如8进制转换为2进制后最少要有6位)
//w-2*k是输入的位数比最低位数多的位数,因为2进制只有0和1,所以所有可能的次数为m
for(j=0;j<m;j++){
for(i=0;i<n-2-j;i++){//每外循环一次,就往前多一位(从右往左)
s=n-i-2+s-j;//每加一位少一次
}
}
}
System.out.print(s);
}
0.0分
2 人评分
P1001 (C语言代码)浏览:800 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:567 |
sizeof的大作用 (C语言代码)浏览:1024 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:696 |
10月月赛题解浏览:536 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:382 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:556 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:580 |
自编的贪吃蛇小游戏,代码装上easyx图形库就能运行。浏览:941 |