3 条题解

  • 0
    @ 2025-10-2 22:07:29

    一道贪心?题目 注意到2的19次方就已经大于n的最大取值,所以生成一个a[20]的数组即可。

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h> 
    #include<math.h>
    
    int main(){
    	int i,n;scanf("%d",&n);
    	int dis=n-1;
    	int a[20];
    	int c=1;
    	int count=0;
    	for(i=0;i<21;i++){
    		a[i]=c;
    		c*=2;
    	}
    	while(dis!=0){
    	
    	for(i=19;i>=0;i--){
    		if(dis>=a[i]){
    			dis-=a[i];
    			count++;
    			break;
    		}
    	}
    	}	
    	printf("%d",count);
        return 0;
    }
    

    信息

    ID
    36
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    367
    已通过
    120
    上传者