![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
Jaster_wisdom
程序员
展开
-
POJ 1006 中国余数定理
这里题考查的 并不是 编程题,严格来说, 是一道数学题。主要考察中国余数定理。这里举一个典型的例子,就是,n % 3 = 2, n % 5 = 3, n % 7 = 2; 问n是多少?这道题枚举当然可以算出来,但是运用定理可以将复杂度降到O(1),它是怎么做到的呢?首先,我们求出5*7的倍数,并且它除以3余1; 同理,求出3*7的倍数,并且它除以5余1; 同理,求出3*5的倍原创 2016-03-05 20:05:33 · 617 阅读 · 0 评论 -
任意进制的转换
本文主要实现任意进制(2进制到32进制)之间的转换,前提是最大的数不超过long long 可表示的范围。思路:将M进制的数字根据公式先转换成 十进制,然后将十进制再转换成 N进制。假设M进制数为X = abcde公式1: 十进制数 = a * M^4 + b*M^3 + c*M^2 + d*M^1 + e*M^0为了优化执行的效率,可以作以下改进:十进制数 = ( ( (原创 2016-08-03 20:34:47 · 1807 阅读 · 0 评论 -
九度OJ 1080 (大整数的任意进制的转换)
题目描述:将M进制的数X转换为N进制的数输出。输入:输入的第一行包括两个整数:M和N(2下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。输出:输出X的N进制表示的数。样例输入:16 10F样例输出:15提示:输入时字母部分为大写,输出时为小写,并且有大原创 2016-08-03 22:00:37 · 5965 阅读 · 5 评论 -
九度OJ 1138 进制转换
题目描述:将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。输入:多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)输出:每行输出对应的二进制数。样例输入:0138样例输出:01111000之前做过一道原创 2016-08-05 16:45:22 · 3355 阅读 · 0 评论 -
九度OJ Jugs (装水凑容量问题)
题目我就不粘贴了,点这里大致意思是:输入三个数a,b,c,表示有两个容器的容量分别是a和b,然后经过有限个六个步骤(将a加满,将b加满,将水从a倒入b,将水从b倒入a,清空容器a,b)里面的几步,从而使得容器里的水容量为c,因为这道题是特殊判题,也就是说不用考虑不成功的情况。这里我分为两种情况,第一,容器a的容量小于N,这种情况相当于样例一,不断的给容器b加水,然后倒入容器a,等a清空之后原创 2016-08-17 20:04:09 · 597 阅读 · 0 评论 -
九度OJ 1089 递推数列
题目描述:给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q。这里n >= 2。 求第k个数对10000的模。输入:输入包括5个整数:a0、a1、p、q、k。输出:第k个数a(k)对10000的模。样例输入:20 1 1 14 5样例输出:8359本题用常规做法,时间复杂度为原创 2016-08-05 21:43:52 · 517 阅读 · 0 评论 -
九度OJ 1097 取中值
题目描述: 存在两组数组,和4个数字a,b,c,d,要求做如下操作,将第一个数组第a个数到第b个数,第二个数组的第c个数到第d个数放到一个数组中,求出合并后数组的中间值,如果有两个中间值,取下标较小的那个。输入: 第一行一个整数t表示有t个测试数据 第二行两个整数,表示两个数组的长度, 接下来两行表示两个数字的值, 最后一原创 2016-08-06 15:55:06 · 773 阅读 · 0 评论 -
九度OJ 1084 整数拆分
题目描述:一个整数总可以拆分为2的幂的和,例如:7=1+2+47=1+2+2+27=1+1+1+47=1+1+1+2+27=1+1+1+1+1+27=1+1+1+1+1+1+1总共有六种不同的拆分方式。再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。用f(n)表示n的不同拆分的种数,例如f(7)=原创 2016-08-06 16:45:14 · 432 阅读 · 0 评论 -
九度OJ 1104 整除问题
题目描述:给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。输入:两个整数n(2输出:一个整数.样例输入:6 10样例输出:1本题按照常理做,是不可能解出来的。但看n!的表示就无法实现,当n=1000时,所有的类型都表示不下,更别说时间复杂度了。这道题的技巧性很强。我们的方法是,分原创 2016-08-07 19:34:09 · 885 阅读 · 6 评论 -
九度OJ 1119 Integer Inquiry
题目描述: One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers原创 2016-08-09 18:58:21 · 624 阅读 · 0 评论 -
九度OJ 全排列
题目描述:给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有'a' 输入:输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。输出:输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:已知S = s1s2...sk , T = t1t2..原创 2016-08-09 22:38:16 · 1970 阅读 · 0 评论 -
九度OJ 1137
题目描述:求2个浮点数相加的和题目中输入输出中出现浮点数都有如下的形式:P1P2...Pi.Q1Q2...Qj对于整数部分,P1P2...Pi是一个非负整数对于小数部分,Qj不等于0输入:对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。每组测试数据之间有一个空行,每行数据不超过100个字符输出:每组案例原创 2016-08-15 11:11:00 · 1117 阅读 · 2 评论 -
将球放入盒中的方法数总结(球盒模型问题)
本篇博客主要讲解球盒模型问题中所有情况,因为该问题是组合数学中的最常见的一类问题,所以有必要在这里详细地说一说。该类问题涉及到三个因素,分别是球、盒子、盒子是否可以为空。所以大概可以将该问题分为以下八种情况:1.将r个无区别的球放入n个有标志的盒中,盒内数目无限制,有多少种情况?2.将r个有区别的球放入n个有标志的盒中,没有一个盒子为空,有多少种情况?3.将r个无区别的球放入n个有标志的盒中,没有一原创 2017-11-11 15:38:59 · 10575 阅读 · 1 评论 -
九度OJ 1076 N的阶乘 (大整数运算)
题目描述: 输入一个正整数N,输出N的阶乘。输入:正整数N(0输出: 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘样例输入:4515样例输出:241201307674368000看到此题,第一个反映是差不多应该用递归做。 然后再一看,N的最大范围到了1000,很明显,long long 型原创 2016-07-30 15:04:44 · 1119 阅读 · 0 评论 -
九度OJ 1040 求前10000个素数
题目描述:Output the k-th prime number.输入:k≤10000输出:The k-th prime number.样例输入:37样例输出:517这道题是求第k个素数,因为k最大为10000,用户每输入一次求一次第k个素数,感觉会有很多重复的计算,倒不如刚开始的时候就将前1原创 2016-07-09 17:00:46 · 1504 阅读 · 0 评论 -
约瑟夫环问题
约瑟夫环问题属于数学问题,大概意思是这样的:一群人围成一圈,编号1,2,3……N,给定一个间隔数M,从1开始报数,报到M的人退出,然后余下的人再从1开始报数,报到M的人再退出,求最后留下那个人的编号。分析:约瑟夫环问题如果在时间允许的条件下,完全可以用程序模拟这个过程,不过我第一次还是没写出来。。关键是 每次往下数的时候,要判断标号对应的人有没有退出,然后才能往下数,而且计数也只能一次自增原创 2016-05-24 22:42:46 · 868 阅读 · 0 评论 -
POJ 1012
这是一道约瑟夫环问题的变种,大致意思就是,有2*k个人围成一圈,第一次从编号为1的人开始报数,报到m的人退出,接下来继续从退出的后一个人开始从1开始报,报到m的人再退出,问当m设置为多少的时候,后k个人先退出,然后前k个人才会依次退出?思路:只要涉及到算法的题,我一般都不会做。。这道题我咋一看就是约瑟夫环的问题,建议初次做这题的人先看一下基本的约瑟夫环的问题,这道题关键就是列出递递推式。假原创 2016-05-25 10:48:44 · 812 阅读 · 0 评论 -
输出打印杨辉三角(队列实现及数组递推实现)
输出打印杨辉三角属于队列实现的例子。杨辉三角的特点我们都知道,每行的数字等于其上层左右两个数字之和。通过队列,将输出的数字保存入队,因为后面的数字需要用到前面的数字和的运算。第一行的1是默认直接入队输出的,每行的最后一个1也是默认输出的,它与前面的数字没有关系。其他的数字可以通过队头元素和下一个元素之和求得。注意第一个元素是通过上面的1和在其左边添一个0得到的。#include原创 2016-05-29 17:35:42 · 3977 阅读 · 0 评论 -
牛吃草问题 (牛顿问题)
今天参加恒生电子的笔试,前面的专业题感觉没什么难度,可后面的逻辑推理题有点坑。如果因为这个被刷的话,那就无语了。下面说一下,我在做题过程中遇到的一个没做出来的题,牛吃草问题,题目是这样的:有一块牧场,里面种植青草,青草每天匀速增长,这块牧场可供10头牛吃20天,15头牛吃10天,则它可供25头牛吃几天?就这样一个看似简单的题,我做了好久没做出来,考试结束后,我在网上查了一下,发现这是一原创 2016-05-21 20:23:33 · 4751 阅读 · 0 评论 -
九度OJ 1001
题目描述: This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns.输入: The input consists of several test cases, each原创 2016-06-10 14:02:53 · 455 阅读 · 0 评论 -
九度OJ 1002
题目描述: Grading hundreds of thousands of Graduate Entrance Exams is a hard work. It is even harder to design a process to make the results as fair as possible. One way is to assign each exam prob原创 2016-06-10 15:13:46 · 968 阅读 · 0 评论 -
九度OJ 1003
题目描述:给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。现在请计算A+B的结果,并以正常形式输出。输入:输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 输出:请计算A+B的结果,并以正常形式输出,每组数据占一行。样例输入:-234,567,890 123,456,789原创 2016-06-10 16:09:34 · 605 阅读 · 0 评论 -
九度OJ 1004
题目描述: Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1={11, 12, 13, 14} is 12, and the median of S2={9, 10, 15, 16, 1原创 2016-06-11 08:51:25 · 1169 阅读 · 0 评论 -
九度OJ 1010
题目描述:读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出.输入:测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.输出:对每个测试用例输出1行,即A+B的值.样例输入:one + two =t原创 2016-06-12 22:45:01 · 513 阅读 · 0 评论 -
九度OJ 1022 游船出租
题目描述: 现有公园游船租赁处请你编写一个租船管理系统。当游客租船时,管理员输入船号并按下S键,系统开始计时;当游客还船时,管理员输入船号并按下E键,系统结束计时。船号为不超过100的正整数。当管理员将0作为船号输入时,表示一天租船工作结束,系统应输出当天的游客租船次数和平均租船时间。 注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有租船没有还船,或者只有还船没有租船的原创 2016-06-28 20:27:29 · 675 阅读 · 2 评论 -
九度OJ 1034
题目描述: 浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.输入: 输入包含多组测试用例. 每个用例首先包含2个整数n(0 n和m同时为0时表示输入结束.输出: 请输出乌镇前m个大富翁的财产数,财产多的排前面,如果大富翁不足m个,则全部输出,每组输出占一行.样例输入:3 12 5 -15 31 2原创 2016-06-30 21:45:33 · 778 阅读 · 0 评论 -
九度OJ 1031
题目描述: 对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。 请计算需要经过几步才能将n变到1,具体可见样例。输入: 测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束。(1输出: 对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行。原创 2016-06-18 22:00:53 · 522 阅读 · 0 评论 -
蓝桥杯-Torry的困惑(基本型) 求素数的多种方法
题目说明:求出前n个质数的乘积,并取模50000,其中n的范围是n<=100000题目分析:这是一道求素数(质数)的题目。素数,是除了1和它自身外,不能被其他数整数的数。其中,2 是素数。基本方法可以是,对每个数,判断它是不是素数,很容易求解。这里for循环内遍历到根号n,就可以了,节约一半时间。代码实现1://普通解法:sqrt(n)#include <iostream>u...原创 2018-03-15 22:22:05 · 369 阅读 · 0 评论