摘要:【例1】最小公倍数。 问题描述 求n个数的最小公倍数。 输入 输入将包含多组测试用例。输入的第一行将包含一个整数,指示测试用例的数量。每个测试用例将由m n1 n2 n3…nm形式的单行组成,其中m是集合中的整数数,n1…nm是整数。所有整数都是正的,并且在32位整数的范围内。 输出 对于每个测试用
阅读全文
摘要:如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数(Greatest Common Divisor,简写为GCD)。例如,自然数12和30的公约数有1、2、3、6,其中6就是12和
阅读全文
摘要:斐波那契数列在很多问题上得到了应用。下面通过一些具体的实例加以说明。 【例1】钢管切割 问题描述 给一根长度为n的钢管,问最多能切割成几段钢管,使得截成的钢管互不相等且均不能构成三角形。 输入 输入文件的第一行包含整数T(1≤T≤10) ,表示测试用例的数量。 每个测试用例包含一行,包括整数N(1≤
阅读全文
摘要:斐波那契数列(Fibonacci sequence),又称黄金分割数列,因意大利数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89..,这个数列从第3项开
阅读全文
摘要:在编写程序解决某些问题时,可以灵活地使用进位制数,例如像二进制枚举就是灵活使用二进制数。下面再讲述一些例题。 1、二进制的应用 【例1】至少一位数字相同 问题描述 给定N个正整数A1,A2,...,AN,求有多少整数对(i,j),满足以下条件: 1≤i<j≤N,Ai和Aj至少有一位数字是相同的(不一
阅读全文
摘要:【例1】求1/n的值。 问题描述 给定个非0的整数n,计算1/n的值。 输入 第一行整数T,表示测试组数。后面T行,每行一个整数 n (1≤|n|≤10^5)。 输出 输出1/n (是循环小数的,只输出第一个循环节)。 输入样例 4 2 3 7 168 输出样例 0.5 0.3 0.142857 0
阅读全文
摘要:【例1】时针分针与秒针 问题描述 给定一个24小时格式的数字时间,问给定的这个时刻时针与分针、时针与秒针、分针与秒针 之间的夹角分别是多少? 输入 有T(1≤T≤104)组测试用例。 对于每组测试用例,用一行hh:mm:ss描述给定的时间。0≤hh<24,0≤mm<60,0≤ss<60。 输出 对于
阅读全文
摘要:我们知道,一个int型整数一般用32位二进制数存储,所表示的最大整数值为 231-1,对应1个10位的十进制整数。因此,一个更大的整数可能需要更多的二进制位来存储,在处理时需要对其进行高精度运算处理。 【例1】二进制加法 问题描述 二进制数相加与十进制数的长加非常相似。与十进制数字一样,从右到左,一
阅读全文
摘要:下面继续通过几个示例体会二进制枚举方法的应用。 【例1】建造碉堡 问题描述 设有一个街道笔直的方形城市。该城市的地图是一个有n行和n列的正方形,每行代表一条街道或一堵墙。 碉堡是一座有四个开口的小城堡,可以通过这些开口射击。四个开口分别面向北、东、南和西。每个开口都会有一支机枪射击。 假设一颗子弹威
阅读全文
摘要:二进制枚举的方法在实际问题中应用还是非常方便的。下面继续体会这一方法的使用。 先看如下的问题。 给出一个数n(1<=n<=1018),求1到n中,有多少个数不是2、5、7、11的倍数? 问题分析 如果n的值较小,可以采用一个简单的一重循环进行处理即可。编写如下的程序。 #include <stdio
阅读全文
摘要:二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。利用二进制的特点,可以用于枚举一个集合中各元素的所有组合情况。 例如,设某集合M中有3个元素A、B和C,即M={A,B,C}。可以用3位二进制数来枚举3个元素的各种组合情况(也可以称为子集),每一位二进制数字对应一个元素,
阅读全文
摘要:1.进位制数 日常生活中人们都采用十进制数,十进制数用0、1、2、3、4、5、6、7、8、9十个数码表示数值;其基数为10,规则逢十进一,借一当十。 计算机中采用二进制数,二进制数只用两个数码0和1来表示数值;其基数为2,规则逢二进一,借一当二。 由于二进制数书写比较麻烦,因此,计算机中通常又用八进
阅读全文
摘要:【问题描述】 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输入的十六进制数不会有前导0,比如012A。 输出
阅读全文
摘要:一、4位数的数字黑洞 任意给定一个4位数(不能所有位都相同),比如:3278,重新组合出最大数:8732,再重新组合出最小数:2378,相减,得到新的4位数(如不足则补0),重复这个过程,最后必然得到一个数字:6174。这个现象被称为:数字黑洞。 编写一个程序,验证这个现象。 例如,给出四位数327
阅读全文
摘要:编写一个程序,将自然数1~n2 按“蛇形”填入n×n矩阵中。例如,当n=5时,构造的方阵如下。 (1)编程思路1。 分析数的填法,是按“从右上到左下”的”蛇形”或“从左下到右上”的”蛇形”,沿平行于副对角线的各条对角线上,将自然数从小到大填写。 设用(i,j)表示矩阵元素的坐标,初始时,i=0,j=
阅读全文
摘要:46、十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个数码,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十
阅读全文
摘要:41、编写函数void fun (int a[], int b[],int *n),其功能是:找出数组a保存的100个四位数中的全部素数,将这些素数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,并通过形参n返回这些素数的个数。 #include <stdio.h> #include
阅读全文
摘要:36、编写函数void fun (int *a, int *n),其功能是:求出100~999之间所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293),并将其放在a所指的数组中,通过n返回这些数的个数。 #include <stdio.h> void fun (int *a, i
阅读全文
摘要:31、请编写函数void fun(char xx[]),函数的功能是:将字符串数组xx中下标为奇数的字符按其ASCII值从大到小的顺序进行排序。 例如:源字符串为:abcdefgh,则处理后字符串为:ahcfedgb。 #include <stdio.h> #include <string.h> v
阅读全文
摘要:21、请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 例如,若二维数组中的数据为 W W W W S S S S H H H H 则字符串中的内容应是:WSHWSHWSHWSH。 注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的
阅读全文