随笔分类 - 数论相关
摘要:剑指 Offer 65. 不用加减乘除做加法 Offer_65 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/14 21:49 */ /** * 题目描述:写一个函数,
阅读全文
摘要:剑指 Offer 57 - II. 和为s的连续正数序列 Offer_57_2 题目描述 方法一:暴力枚举 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/12 16:42 */ /** * 题目描述:输
阅读全文
摘要:剑指 Offer 56 - I. 数组中数字出现的次数 Offer_56_1 题目描述 解题思路 java代码 /** * 方法一:数位方法 */ class Offer_56_1_2 { public int[] singleNumbers(int[] nums) { int ans = 0; f
阅读全文
摘要:剑指 Offer 40. 最小的k个数 Offer_40 题目描述 解法一:排序后取前k个数 /** * 题目描述:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 */ /** * 方法一:先对数字进行排序,然
阅读全文
摘要:剑指 Offer 14- II. 剪绳子 II 题目链接 因为有取模的操作,动态规划中max不能用了,我们观察:正整数从1开始,但是1不能拆分成两个正整数之和,所以不能当输入。 2只能拆成 1+1,所以乘积也为1。 数字3可以拆分成 2+1 或 1+1+1,显然第一种拆分方法乘积大为2。 数字4拆成
阅读全文
摘要:剑指 Offer 14- I. 剪绳子 题目链接 还是343. 整数拆分的官方题解写的更清楚 本题说的将绳子剪成m段,m是大于1的任意一个正整数,也就是必须剪这个绳子,至于剪成几段,每一段多长,才能使得乘积最大,这就是要求解的问题了 ##【解题思路1】动态规划 对于的正整数 n,当 n≥2 时,可以
阅读全文
摘要:热河路 ECNU-3532 本题wa了两发,主要是是我使用c++的加速:ios::sync_with_stdio(false)以及cin.tie(0)还是无法满足时间要求,会超时。 另一个考点就是递增序列的计算。 #include<iostream> #include<cstdio> #includ
阅读全文
摘要:Google Recruitment PAT-1152 本题最需要注意的是最后输出要以字符串形式输出,否则可能会出现前导0的情况。 /** * @Author WaleGarrett * @Date 2020/9/18 21:14 */ import java.io.*; import java.u
阅读全文
摘要:试题E: RSA 解密 这里涉及到很多数论的知识:质因子分解,扩展欧几里得算法,快速幂算法,利用快速乘算法求解快速幂(mod太大导致不能直接乘,而是需要使用加法来替代乘法) 另外还需要注意扩展欧几里得算法求解出来的乘法逆可能是负数,所以需要使用公式进行转换。 #include<iostream> #
阅读全文
摘要:Currency Exchange "POJ 1860" 这题其实是最短路问题的变形,但是这里不用求解最短路,而是求解路径中是否存在正圈。如果存在正圈则说明兑换后的货币可以一直增加,否则不能实现通过货币转化来增加财富。 这和经典的使用Bellman Ford判断是否存在负权也有不同的地方,这里需要在
阅读全文
摘要:斐波那契数列 "PREV 29" 这题的难度很大,主要是题目中的要求数据量太大,1^18,这不管是运行时间会超时,而且累加的话也会超出long型的大小。 我采用多种方法来求解这道题目,逐步优化算法。 1. 基础解法:直接暴力求解斐波那契数列(得分:40) 我们深入考虑斐波那契的性质: 1.1 f(x
阅读全文
摘要:包子凑数 "PREV 36" 这题首先需要知道不定方程的一些性质,即:ax+by=c的解的情况: 如果a,b互质,则一定有解且由无穷多个。若限制x,y =0,则ax+by=c有可能有负数解,即存在有限个c使得方程无正数解。且存在max{c|使方程无解的c}=a b a b; 如果a,b不互质,则可能
阅读全文
摘要:引水入城 "201703 5" 这从题目分析来看很像最大流的问题,只需要增加一个超级源点和一个超级汇点就可以按照题意连边再跑最大流算法。 因为数据量太大了,肯定会超时。但是没有想到可行的解决方法。 include using namespace std; const long long INF=0X
阅读全文
摘要:TDL "HDOJ 6641" 1. 关于题意,就是要找出符合f的第m大的数,而且后面还要满足异或等式。 2. 通过观察题目,可以发现n太大了,所以不能直接枚举。当然因为m比较小,所以可以转换思路k^n,这个数最大不超过1000. 3. 因为枚举了k^n就可以通过枚举的数求出n(也是用异或运算),接
阅读全文
摘要:Bi shoes and Phi shoe "LightOJ 1370" 题目的含义含简单,就是先筛欧拉函数,打表,最后遍历就行了。 本题根据欧拉函数的特质还有一个不需要使用欧拉函数的方法,直接筛素数就行了。 "另一种方法" include include include include using
阅读全文
摘要:Kejin Player "HDOJ 6656" 设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f[2]....f[i] ,那么从 l 升级到 r
阅读全文
摘要:bfs搜索加记录路径 HDOJ-1043 主要思路就是使用双向广度优先搜索,找最短路径。然后记录路径,找到结果是打印出来。 使用康拓序列来来实现状态的映射。 打印路径推荐使用vector最后需要使用algorithm里的reverse进行路径的翻转。 注意本题有多组输入,这里的输入需要注意一下。 如
阅读全文