计算机考研真题 排列与二进制

题目描述

在组合数学中,我们学过排列数。从n个不同元素中取出m(m<=n)个元素的所有排列的个数,叫做从n中取m的排列数,记为p(n, m)。具体计算方法为p(n, m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)! (规定0!=1).当n和m不是很小时,这个排列数是比较大的数值,比如  p(10,5)=30240。如果用二进制表示为p(10,5)=30240=( 111011000100000)b,也就是说,最后面有5个零。我们的问题就是,给定一个排列数,算出其二进制表示的后面有多少个连续的零。

输入描述:

输入包含多组测试数据,每组测试数据一行。
每行两个整数,n和m,0<m<=n<=10000,n=0标志输入结束,该组数据不用处理。

输出描述:

对于每个输入,输出排列数p(n, m)的二进制表示后面有多少个连续的零。每个输出放在一行。

示例1

输入

10 5
6 1
0 0

输出

5
1



//计算机考研真题 排列与二进制
/*
程序设计思想:
    问题实质就是求n*(n-1)*……*(n-m+1)能整除几次2。那么,可以把每个乘数分别判其断能分解出的2的数量,
然后加在一起就是乘积能分解出的2的数量。
*/
//程序实现:
#include<iostream>
using namespace std;
const int N=10001;

int main(){
    int two[N]={0};    ///two[i]表示i能分解出2的个数
    int tmp=0;
    for(int i=1;i<N;++i){    //求1到N中每个数能分解出2的个数
        tmp=i;
        while(tmp%2==0){
            tmp=tmp/2;
            two[i]++;
        }
    }
    int n=0,m=0,cnt=0;    //cnt一定要初始化,这是教训,因为累积过程中,第一次会给随机值!以后变量都初始化!
    while(cin>>n>>m&&n!=0){
        for(int i=n; i>n-m;--i)    //统计
            cnt+=two[i];
        cout<<cnt<<endl;
    }
    return 0;

}

原文地址:https://www.cnblogs.com/parzulpan/p/10050226.html

时间: 2024-10-07 00:41:56

计算机考研真题 排列与二进制的相关文章

计算机考研真题 位操作练习

题目描述 给出两个不大于65535的非负整数,判断其中一个的16位二进制表示形式,是否能由另一个的16位二进制表示形式经过循环左移若干位而得到. 循环左移和普通左移的区别在于:最左边的那一位经过循环左移一位后就会被移到最右边去.比如: 1011 0000 0000 0001 经过循环左移一位后,变成 0110 0000 0000 0011, 若是循环左移2位,则变成 1100 0000 0000 0110 输入描述: 每行有两个不大于65535的非负整数 输出描述: 对于每一行的两个整数,输出一

2014年计算机考研真题重点选择题部分真题及解析

5个元素有4种编码方案,下列不是前缀编码的是 A.01,0000,0001,001,1 B.011,000,001,010,1 C.000,001,010,011,100 D.0,100,110,1110,1100 ——————————————————涉及考点:字符的前缀编码—————————————————— (考研专硕复习计划http://www.kyjxy.com/zhuanshuo/) 用哈希(散列)方法处理冲突(碰撞)时可能发生堆积(聚集)现象,则下列会直接受到堆积现象影响的是 A.存

21考研|全国院校历年考研真题资源大集合

考研搜集资料.选择资料就好比是作战的武器,是很重要的一件事,武器不好,即使有策略,也总是差那么一点,该怎么选择资料呢? 下面学长就给考研小白们分享一些考研前辈们搜集资料的技巧,希望大家尽自己所能抢占先机,不落后于人.全国500多所高校的考研专业课资料包括视频.真题资料来了. 需要的朋友加Q2608231557获取资源吧! 原文地址:https://www.cnblogs.com/zhaco/p/12298502.html

【计算机综合真题】2012年计算机专业(基础综合)真题试卷

一.单项选择题:第 1-40 小题,每小题 2 分,共 80 分.下列每题给出的四个选项中,只有一个选项最符合试题要求 1.求整数n(n≥0)阶乘的算法如下,其时间复杂度是 2.已知操作符包括„+?. „-?. „*?. „/?. „(?和„)?.将中缀表达式 a+b-a*((c+d)/e-f)+g 转换为等价的后缀表达式 ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是 . A. 5 B. 7 C. 8

2016校招真题编程-懂二进制

题目描述 世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 解题思路:异或,除二取余 源代码: package SuperHakceMainPackage; import java.util.Scanner; public class SuperHakceMian { int countBitDiff(int n,int m){ return n ^ m; } int findN

重温考研真题...

#include <stdio.h> struct node{ char data; struct node *next; } NODE; struct node *find(struct node *str1, struct node *str2){ int str1_len = 0, str2_len = 0; struct node *p = str1; while(p->next != NULL){ str1_len++; p = p->next; } p = str2;

2016大连理工大学计算机考研经验

2016考研成绩已出,本人报考大连理工大学计算机科学与技术(本科也在大连理工),初试总分387排名第一,政治64,数学114,英语78,数据结构和计算机组成原理131.这个分数并不算高,现在记下本人复习的全过程,只为抛砖引玉,希望能给大家一点启发. 1.复习流程 数学: 114分不算高但也不算低,16数学有些偏难,手滑错了俩选择俩填空,后边错了半道线代和半道概率和四分之一道高数.复习时之前10年真题基本都在140左右.我们班有一个真题基本都在150的最后考了122. 第一个阶段,从3月开学开始到

计算机考研科目

政治理论.外国语.数学一和计算机学科专业基础综合,卷面满分值分别为100分.100分.150分和150分(数据结构45分 计算机组成45分 操作系统35分 计算机网络25分). 政治英语数一 计算机学科专业基础综合         数据结构(c语言版)  严蔚敏   清华出版社                   45分         计算机组成原理(第四版)   白中英  科学出版社          45分         操作系统(第二版)   宗大华  人民邮电出版社         

2015考研计算机真题大题信号量进程同步问题

哈哈哈,拿到考研的题目来考考你们,看看你们做的出来不,谁让我是正在考计算机研究生的筒子,希望能马上加入研发团队,毕竟我那么想当个技术宅. 45. 有A.B两人通过信箱进行辩论,每人都从自己的信箱中取得对方的问题.将答案和向对方提出的新问题组成一个邮件放入对方的邮箱中,设A的信箱最多放M个邮件,B的信箱最多放 N个邮件.初始时A的信箱中有x个邮件(0<x<M). B 中有y个(0<y<N).辩论者每取出一个邮件,邮件数减1.A.B两人操作过程:Code BeginA{While(TR