力扣数论
数论(更新中)1、数根基础知识数根又称数字根$(Digital root)$,是自然数的一种性质,每个自然数$num$都有一个数根。对于给定的自然数,反复将各个位上的数字相加,直到结果为一位数,则该一位数即为原自然数的数根。 计算数根的最直观的方法是模拟计算各位相加的过程,直到剩下的数字是一位数。 设自然数$num$的数根为$x$,设$a_i$为$num$每一位的数,则 \begin{align} num &=\sum_{i=1}^{n} a_i \times 10^i \\ &=\sum_{i=1}^{n} a_i \times (10^i-1+1) \\ &=\sum_{i=1}^{n} a_i \times (10^i-1)+\sum_{i=1}^{n} a_i \end{align}当$i=0$时,$10^i-1=1-0=0$,是$9$的倍数;当$i\neq0$时,$10^i-1$是由很多个$9$组成,如$9、99、999$等,也是$9$的倍数,因此可以得到 num \% 9=\sum_{i=1}^{n} a_i\%9例如258.各位相加就是用了这个性质,可以快速计算...
力扣算法知识相关
算法知识相关(更新中)1 前缀和1.1 基础知识$\bigstar$表示前$i$个位置的数字的和。常见的就是,$sum$数组下标从$1$开始,则其初始化过程为 123for(int i=1;i<=a.size();i++){ sum[i]=sum[i-1]+a[i];} $\bigstar$若$sum$数组下标从$0$开始,则其初始化过程为 1234sum[0]=a[0];for(int i=1;i<a.size();i++){ sum[i]=sum[i-1]+a[i];} $\bigstar$计算$i \in [l,r]$范围内数的和,则和为$sum[r]-sum[l-1]$。但!要!注意!$l-1$有可能是负数的问题! 以及!要注意!有些题$l$和$r$是计算出来的,可能会出现$l>r$的情况,还可能出现$l$和$r$大于前缀和数组最大下标的情况!!!这些都要注意了!!! 若$sum$数组下标从$1$开始,则$[l,r]$范围内数的和为$sum[r]-sum[l-1]$ 若$sum$数组下标从$0$开始,则...
力扣基础知识掌握
今天我练习了力扣的一些题目,感觉收获很多。 基础掌握(更新中)1 心里有数$\bigstar$的几次方是$1s$? $\bigstar$在写题的时候要注意特殊的数字,如$0、1$等。 $\bigstar$对二维数组$arr$怎么遍历呢? 123for (int i = 0; i < arr.size(); i++) { for (int j = 0; j < arr[0].size(); j++)} 二维数组$arr$初始化: 1vector<vector<int>>arr(n,vector<int>(m,0)); $\bigstar$注意,在分割字符串的时候,若一定要将字符串s分割成两个字符串,那么遍历的时候$i<n-1,j=i+1$。像这样,而不是$i<n$,是$i<n-1$,这个千万不能忽略,很重要!!! 123for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++)} $\bigstar$double类型的数...