胡晓影


私信TA

用户名:2745567641

访问量:1213

签 名:

等  级
排  名 6067
经  验 1462
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:

    看了很多题解都是用了排列组合的思路来解这道题,个人觉得排列组合的思路很巧妙,但可能并不是很好理解,而且还要考虑大数的计算,并不是很方便.我的思路是把每个可能的数都验证一遍,判断是否符合题目要求。
参考代码:

#include<stdio.h>
#include<math.h>
int main()
{
	int k,w;
	int x,y,z,f;
	int sum=0;
	scanf("%d%d",&k,&w);
	int max=pow(2,w)-1;//最大的可能性 
	int J=pow(2,k);//进制

	int i=J;//最小的可能性 
	while(i<=max)//暴力循环 
	{
		x=i;
		f=1; //标志位,符合为1,不符合为0 
		/**/ 
		z=x%J;
		x=x/J;
	 	while(x!=0)
	 	{
	 	y=x%J;
		x=x/J;
		
		if(z<=y)f=0;//一旦前一位不小于后一位 说明该数不符合 
		z=y;
		 }

		 if(f==1)sum++; //该数符合,总数加一 
		 i++;//验证下一个数 
	}
	printf("%d",sum);
	return 0;
}


 

0.0分

3 人评分

  评论区

有没有想过数据过大的情况?w>100直接就无了
2022-10-27 17:17:44
  • «
  • 1
  • »