求N!的二进制表示中最低位1的位置?

news/2024/7/7 19:55:53

解法一:如果n!最末尾位0,则右移一位得到商,如果末尾是1,则不能被2整除,是奇数,这个问题等同与求n!中质有质因数2的个数。。最后结果再加1

代码:

#include<iostream>
using namespace std;
int main()
{
    int n,sum;
    sum=0;
    cin>>n;
    while(n)
    {
        n>>=1;
        sum+=n;
    }
    cout<<sum+1<<endl;
    system("pause");
    return 0;
}

解法二:N减去N的二进制表示中1的数目,然后再加1。。这也是一个规律。。

代码:

#include<iostream>
using namespace std;

int getNum(int n)
{
    if(n==0) return 0;
    int count=0;
    while(n)
    {
        n&=(n-1);
        count++;
    }
    return count;
} 

int main()
{
    int n,sum;
    sum=0;
    cin>>n;
    cout<<n-getNum(n)+1<<endl;
    system("pause");
    return 0;
}

 


http://www.niftyadmin.cn/n/2257138.html

相关文章

Viewer.js – 强大的JS/jQuery图片查看器

前序 在后管开发过程中经常需要对图片显示、放大、轮播、翻转等 使用篇 http://www.dowebok.com/192.html

Codeforces | CF1037D 【Valid BFS?】

题目大意:给定一个\(n(1\leq n\leq 2\cdot10^5)\)个节点的树的\(n-1\)条边和这棵树的一个\(BFS\)序\(a_1,a_2,\dots,a_n\),判断这个\(BFS\)序是否是一个从节点\(1\)开始的合法\(BFS\)序,若合法则输出\(Yes\),否则输出\(No\) 题目核心问题是判断给出的\(BFS\)序的合法性,根据\(B…

Linux hostname主机名的配置文件/etc/hosts详细介绍

2019独角兽企业重金招聘Python工程师标准>>> 1、 什么是Linux主机名 无论在局域网还是INTERNET上&#xff0c;每台主机都有一个IP地址&#xff0c;是为了区分此台主机和彼台主机&#xff0c;也就是说IP地址就是主机的门牌号。但IP地址不 方便记忆&#xff0c;所以又…

下载多张图片并压缩成压缩包

工具类 package com.manage.util;import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedInputStream; import java.i…

sklearn的train_test_split

train_test_split函数用于将矩阵随机划分为训练子集和测试子集&#xff0c;并返回划分好的训练集测试集样本和训练集测试集标签。 格式&#xff1a; X_train,X_test, y_train, y_test cross_validation.train_test_split(train_data,train_target,test_size0.3, random_state0)…

Spring Cloud Gateway过滤器工厂GatewayFilterFactory初探

1. 概述 在【spring cloud gateway】的官方文档中&#xff0c;是这样说明GatewayFilterFactory的&#xff1a; Route filters allow the modification of the incoming HTTP request or outgoing HTTP response in some manner. Route filters are scoped to a particular rout…

计算机系统管理内存的大小是由什么决定的,请问行家,电脑的虚拟内存是什么,它的大小由什么决定 爱问知识人...

虚拟内存用硬盘空间做内存来弥补计算机RAM空间的缺乏。当实际RAM满时(实际上&#xff0c;在RAM满之前)&#xff0c;虚拟内存就在硬盘上创建了。当物理内存用完后&#xff0c;虚拟内存管理器选择最近没有用过的&#xff0c;低优先级的内存部分写到交换文件上。这个过程对应用是隐…

Netflix开发者大赛,云计算1.0,还是2.0?

Joe Emison是BuildFax公司的CTO和创始人&#xff0c;该公司为企业提供地产方面的数据&#xff0c;在技术架构上以云计算为基础。最近&#xff0c;Joe Emsion在信息周刊上发表文章《Netflix如何毁掉云计算》&#xff0c;指责Netflix最近举办的云计算开发者大赛抱有“以AWS为中心…