Part 1 快速幂 朴素的O(n)算法过慢,又存不下过大的变量,所以考虑将指数二进制化,每次右移一位,底数随着自乘,就有了O(logn)的算法。 大数通常需要结果对P取模, 为了避免中间变量溢出,我们可以边取模边计算,有如下等式: (a\ b)%p=((a%p)\ (b%p))%p 代码如下: i ...
分类:
其他好文 时间:
2018-03-03 15:32:31
阅读次数:
176
在此记录一些常见的C语言错误,可以当作学习C语言的笔记,需要的时候可以回过头看看。 1.关于“++” 关于自加自减运算符用于句话就可以总结:a++先使用后自加,++a先自加再引用。这样就可以轻松得出结果: 2.交换变量 第一种方法即中间变量法,下面说明第二种,不添加中间变量: 3.char* str ...
分类:
编程语言 时间:
2018-02-28 12:53:19
阅读次数:
196
1. 求a, b中较大的数,不使用if、?、switch等判断语句。 答案: 另一种思路是求两者的差,然后通过位运算判断差值的正负,不过个人觉得还是第一种各位简洁优雅。 2. 交换a, b的值,要求不使用任何中间变量。 答案: ...
分类:
其他好文 时间:
2018-02-27 23:33:01
阅读次数:
190
原理 : 源代码: public class insertSort { public static void sort(int[] array) //插入排序 { int temp =0; //中间变量 for(int i=1;i<array.length;i++) { temp =array[i] ...
分类:
编程语言 时间:
2018-02-20 17:30:00
阅读次数:
172
直接看源代码; 总结: 第一种方式,利用中间变量进行累加,这种方式最简单粗暴; 第二种方式; 利用我们linq aggretion(聚合)的原理,有点函数编程的感觉,每一次求和的结果,参与到下一次的计算中; 第三种方式:经典的递归; 三种方式,结果没有什么,差异,更过的是体会实现过程; 结果: ...
分类:
Windows程序 时间:
2018-01-03 17:30:36
阅读次数:
2059
Python部分 Mention the use of // operator in Python? a=1, b=2, 不用中间变量交换a和b的值 请用自己的算法, 按升序合并如下两个list, 并去除重复的元素 list1 = [2, 3, 8, 4, 9, 5, 6] list2 = [5, ...
分类:
编程语言 时间:
2017-12-31 10:48:40
阅读次数:
241
一、PTA实验作业 题目1: 结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明。 答案错误:交换数值时只交换了总分,前面的都没被交换,导致答案输出错误。 调试过程: 解决办法:将中间变量定义成结构体变量,交换时将结构体的内 ...
分类:
编程语言 时间:
2017-12-25 01:02:01
阅读次数:
260
我们很容易想起python中的两个值交换一句搞定不用引入中间变量 但在numpy的array或matrix中,这样是错误的 需要使用选中两行来互换: 下面看一个实例: ...
分类:
其他好文 时间:
2017-12-05 22:38:53
阅读次数:
277
要求一: 7-3 将数组中的数逆序存放 一 实验代码: 二 设计思路: 1.根据题意定义变量,分别是整型变量:i,n数组长度,swap中间变量,array[10]数, 2.理解题意,本题需要用到循环结构,确定循环体,即数组中的数逆序存放的代码: 3.输入数字,确定数组长度,再输入几个数,确定数组长度 ...
分类:
其他好文 时间:
2017-12-04 00:03:06
阅读次数:
183
前两天手写快速排序,最后得到的结果是错误的而且还错的非常奇怪。输入的待排序数组是: 最后得到的结果是: 上网看了看别人的代码,发现我写的快速排序的算法逻辑是没有错误的,难道是交换元素时用的算法不对? 我用的交换算法是异或交换,就是不用中间变量那种: 然后将其换成使用中间变量的交换算法: 然后结果就对 ...
分类:
编程语言 时间:
2017-11-11 23:49:45
阅读次数:
218