algorithm
playmakerlby
hello world
展开
-
扩展的fibonacci数列(矩阵快速幂)(Java)
在求fibonacci数列的第n项时。如果n很大,可以使用矩阵快速幂的方法。 1.通过递推公式得到矩阵。an=an−1+an−2;得到2个向量,v1=[an,an−1],a_n=a_{n-1}+a_{n-2};得到2个向量,v_1=[a_n,a_{n-1}], an=an−1+an−2;得到2个向量,v1=[an,an−1], v2=[an−1,an−2],矩阵快速幂求数列第n项不再赘v_2=[a_{n-1},a_{n-2}],矩阵快速幂求数列第n项不再赘v2=[an−1,an−2],矩阵原创 2022-02-08 14:51:18 · 290 阅读 · 0 评论 -
题目二: 长整数、高精度运算
一、问题描述: 设计一个程序实现两个任意长的整数(包括正数和负数)、任意精度实数的算术运算。 二、提示: (1)用动态链表存贮数据,每结点含一个整型变量,表示若干位数。 (2)整数输入和输出按中国对于长整数的习惯表示,每3位1组,组间用逗号隔开。 (3)实现长整数的加、减运算。 (4)程序运行界面清晰实用。 选做: (1)求两长整数之商、之积。 (2)高精度实数算术运算。 本篇只实现最基本功能 #include <stdio.h> #include <iostream> using原创 2022-02-04 22:33:58 · 1511 阅读 · 1 评论 -
任意进制转换 Java
为了表达大于10进制的数字的表达。首先定义编码方式。 ‘A’-'Z’表示10-35,‘a’-'z’表示36-61。 之后本文使用2个方法。一个是将任意数转换为10进制数。另一个是将10进制数转换为任意进制。 需要注意的两点。 1.字符串索引为0的地方是最高位。乘方时要注意。 2.通过append生成的字符串是逆序的。需要reverse()操作。 public class SolutionC { public static void main(String[] args) { } pr原创 2022-01-24 11:43:05 · 379 阅读 · 0 评论 -
丑数(进阶)(Java)
丑数作为一道经典题,在leetcode和剑指offer中都有出现过。 此处列出一个链接来了解其原本的样子和解法。 https://zhuanlan.zhihu.com/p/314293665 之后,本文对其进行扩展。 给定素数集合S={p1,p2,…,pk},而丑数是指一个正整数满足所有质因数都出现在S中,1默认是第1个丑数。 例如S={2,3,5}时,此时前20个丑数:1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 3原创 2022-01-24 11:29:19 · 399 阅读 · 0 评论 -
java求大数幂次的方法
首先,引入问题。求ab%c的值。首先,引入问题。求a^b\%c的值。首先,引入问题。求ab%c的值。 其中 a=72356825451438, b=53727354327038, c=27335634901889 首先。a的b次方是一个非常大的值。BigInteger类也不能储存。 所以使用快速幂的方法。连同BigInteger.每次乘方的结果都要模c。并且BigInteger的使用也是值得注意的。 public class SolutionD { public static void main(S原创 2022-01-16 18:28:32 · 1164 阅读 · 0 评论 -
2286 · 求最大公约数(Python 版)使用辗转相除法
题目链接 https://www.lintcode.com/problem/2286/ 分析 直接使用辗转相除法即可,非常简单。 import sys a = int(sys.argv[1]) b = int(sys.argv[2]) # write your code here # please print the greatest common divisor of a and b def gcd(a,b): if(b==0): return a else:原创 2021-11-26 20:20:32 · 713 阅读 · 0 评论 -
1100: 阶乘末尾0的个数(二)(java)
题目描述 相信你已经熟练掌握N!末尾的0的个数的求法。 现在给出数字Q,请找到最小的N,使得N!末尾恰好有Q个0 输入 输入一个整数Q(1<=Q<=10^8) 输出 如果无解,输出"No solution",否则输出 N 。 样例输入 2 样例输出 10 思路:使用二分法。求n!末尾0的个数可以看 https://blog.csdn.net/lby666888/article/details/121493100?spm=1001.2014.3001.5501 代码如下 import java.u原创 2021-11-23 17:04:14 · 291 阅读 · 0 评论 -
1037: 阶乘末尾0的个数(一)(Java)
题目描述 求N的阶乘末尾存在多少个0。 输入 输入存在多组测试数据,对于每组测试数据输入一个整数N(0<=N<=10^9) 输出 对于每组测试数据,输出一行表示答案。 样例输入 12 20 样例输出 2 4 题目分析,由于2*5=10,2的数量比5的数量多,所以只需统计5的数量即可,一个数的阶乘中,5的因子的数量是n/5,而有些数可以被5除多次,所以使用递归。 import java.util.Scanner; public class Main { public static voi原创 2021-11-23 14:52:02 · 360 阅读 · 0 评论