zoukankan      html  css  js  c++  java
  • 集合Gk表示这样一堆数字,该集合内的数字有k个1

    问题描述

    集合Gk表示这样一堆数字,该集合内的数字有k个1。比如,G1 = { 1, 10, 100, 1000, ...} G2 = {11, 110, 1110 }, ... , Gk { ... }
    给定一个数字,找出该数属于哪一个集合,并且返回该数在集合中的下标。

    输入:6 = 110
    输出:2  

    代码实例

    #include <stdio.h>
    #include <limits.h>
    
    long rankInGk(long n)
    {
    		long index = -1;
    		long num1 = 0;
    		
                    long np = n;
    
    		while(np) {
    			num1++;
    			np = np & (np - 1);
    		}
    	
                    printf("%ld
    ", num1);
    
    		long i;
    		for (i = 0; i < LONG_MAX; i++) {
    			long numm1 = 0;
    
                       long icp = i;
    
    			while (icp) {
    				numm1++;
    				icp = icp & (icp - 1);
    			}
    
    			if (numm1 == num1) {
    				index++;
    
    				if (i == n){
                        return index;
    				}
    			}
    
    		}
    
    		return index;
    
    }
    
    int main(int argc, char *argv[])
    {
    	long res;
    	long _n;
    
            scanf("%ld", &_n);
    
    	res = rankInGk(_n);
    	printf("res:%ld
    ", res);
    
    	return 0;
    }
    
    
  • 相关阅读:
    Django后台admin的使用
    $(.ajax)的使用
    centos7配置双网卡bond
    vsftpd服务的搭建
    linu重置root密码(CentOS7)
    python内置函数
    元组和字典的魔法
    列表的魔法
    字符串的魔法
    zabbix-get
  • 原文地址:https://www.cnblogs.com/dennis-wong/p/9180642.html
Copyright © 2011-2022 走看看