题解列表

筛选

优质题解

1933: 蓝桥杯算法提高VIP-约数个数(算数基本定理)

解题思路:O(n)的算法很容易想到,正好刚学了数论,就写一个求约数的模板吧,它的时间复杂度是O(sqrt(n))根据算数基本定理,一个数可以分成多个质数相乘,例如60=2*2*3*5;而约数个数就是根据算数基本定理来的,约数的个数等于分解出的质数次方+1相乘如60的约数个数为:(2+1)*(1+1)*
优质题解

1774: [编程入门]C语言之二进制位问题(位运算)

解题思路:不要用数组来做,虽然实现比较简单,但是这是一道练习位运算的好题。明显的,位运算会在以后做题中给我们很大帮助,熟悉和掌握它是我们必要的工作。我们的一个思路就是让x~y的位都保留,而其它位都为0,这样就能得到x~y位代表的值了。怎么让其余都为0而x~y位不变呢,我们先看一个小例子。
优质题解

多重背包(动态规划 + 极限空间优化 + 解题思路)

以前做的背包问题,要么是n个物品,每个物品只有1个,要么是n种物品,数量不限。好家伙,这里n种物品,数量有限。所以用pos记录数量,这么考虑,我们把物品摊开成一排,第一种c1个,第二种c2个,第三种c3个...,一共就是pos个,所以你会看到我开的w[],
优质题解

python-幸运数

解题思路:题目不太好理解。每次删除的是序列号,最后保留的也是序列号。按题目案例来说m,n=30,69它的意思就是在31~68中有多少个序列号是最后保留下来的序列号。最后保留下来的个数就是幸运数的个数。那么我们可以先创建一个大小为69的数组B=[iforiinrange(n)]首先我们要将B中下标能整除
优质题解

python-带分数(巧解,时间复杂度低)

解题思路:首先对题目进行分析,我们要处理的数一共有三个,一个是整数,一个是分母,一个是分子。接下来说一下本题的解法。根据数学规律,我们可以得知,两数相除,如果我们要得到一个n位数的商,只有两种情况,①分子比分母多(n-1)位。②分子比分母多n位。
优质题解

python-买不到的数目

摘要:解题思路:①首先我们要解决边界的问题,从哪一个数开始往下进行判断。这里我想到的是a和b的最小公倍数。从最小公倍数开始,依次递减1往下判断其是否能被a,b组合。②如何判断一个数是否能被a,b组合   若……
优质题解

python-2^k进制数

解题思路:动态规划建立一个大小为(m+1)*(maxnum)的二维数组dp。其中m代表r最多能划分的位数,maxnum代表r中每一位的最大值。dp[i][j]代表r有i位,最高位为j时有多少种可能。①初始化dp[1][j]=1(j=1tomaxnum),1位时最高位最高位为j的可能数为1。
优质题解

[Sapphire]1062:公约公倍数(辗转相除法)!!!(C语言代码)

辗转相除法Sapphire2022/2/13解题思路:寻找两个数之间的最大公约数,我们所用的方法为辗转相除法(迭代),又称欧几里得算法,具体做法是用较大数除以较小数,再用出现的余数去除以除数,如此反复,直到最后的余数为0为止。即(m,n)=(n,r)=(r,x),
优质题解

1074: 数字整除 模拟除法(C语言15行)

照着题目的意思是想让递归来做,但是递归更麻烦,而且效率比较低反倒不如忽视掉题目里的定理,直接模拟大数除法更简便**字符型本质是有符号整数,可以做运算假设ch是一个字符且表示一个数字,那么ch-'0'可以得到这个数字例如ch='3'那么ch-'0'=3**####具体步骤:**1、输入字符串s并判断是否