
数学
文章平均质量分 61
数学中的各种原理才是计算机科学的重中之重
Shallow_Carl
Never Give Up!
展开
-
约瑟夫环数组解法
题目描述题目就是N个人,每第M号淘汰,输出最后选中的那位的序号.思路我们设置一个vector数组,每一个数组都是先预处理为下标 i 的数值,每一次第 M 号被淘汰,我们就选择将这个位的值置为-1,同时移动下标pos,自减一个提前设置好的初始值等于N的这样一个变量sum. 如果 当前位本来就是被访问过得,我们就移动到下一位.代码(逻辑很简单)class Solution {public: int lastRemaining(int n, int m) { vector<in原创 2022-01-20 20:52:32 · 898 阅读 · 0 评论 -
欧几里得算法GCD和扩展欧几里得算法(小白理解<->小白友好)
GCD<->GG(滑稽)一_欧几里得算法问题描述:给定整数a,b,求出最大公约数解决方案:递归解决,int f(int a,int b){//终止条件 if(a%b==0) return b; return f(b,a%b);}解释(强行解释 ):觉得不好理解?没关系,多举几个例子,就会了,咳咳,这不是我的风格,这里还是贴出数学解释的链接,等到你觉得不好理解的时候,一定又会想起我建议的方法了.GCD数学解释二_扩展欧几里得算法问题描述:给出两个正数a,b求出一组解x,y原创 2021-01-21 16:26:59 · 184 阅读 · 0 评论 -
如何口算一个比较大的数字的阶乘的位数
今天在写一道题https://www.luogu.com.cn/problem/solution/P1591的时候看大佬开了个数组,我一直想不通如何确定这个数组的大小,为此查了很多资料,自己最终总结出了一套方法eg:1000!直接计算N!的数值,然后再去数位数,这个很难,因为N!很有可能超过int(32bit) 或long(64bit)的表达范围。换一种思路,假设要求的位数为x, 那么一定满足 10^(x-1) <=N!<10^x。两边取10为底的对数,得到x-1<=log10(原创 2020-08-05 15:39:30 · 361 阅读 · 0 评论 -
洛谷1518__两头塔姆沃斯牛
0.预处理:在边界设置’*’,这样避免了出界1.关于移动:形参分别表示x,y,方向,标识符(0表示奶牛,1表示农夫),还有一点就是关于转向:经过事实证明:你只有设顺指针转动的顺序对应0123才可以,对这一点我试验了很多次,也还没想通…欢迎大家思考交流qwq2.如何判断进入死循环?这个问题让我想了很久,最后本蒟蒻不得已看了眼题解qaq,顿时知道了还有专属值这样一个神奇的东西,大意:当奶牛和农夫在任意两个时刻走过了同一个地方,那么就表示进入循环(不难理解),大家在设置专属值数组时,主要看被乘以的那个数字上限原创 2020-07-05 23:05:14 · 247 阅读 · 0 评论 -
高精度减法和乘法(C++)
#高精度减法思路:和高精度加法一样,用新的数组K保留相同位数相减的结果,用余数r保留每一位的正负,用flag来消除从高位向低位输出时多余的0代码实现:`#include<bits/stdc++.h>using namespace std;int main(){ bool flag=false; int count=0; string a,b; cin>>a>>b; if(a.size()<b.size()||a.size()==b.size原创 2020-06-30 22:43:24 · 169 阅读 · 0 评论 -
高精度加法(C++版本,这绝对是我见过的最简单的解法)
小蒟蒻终于开始迈出了走向大蒟蒻的第一步!哈哈...咳咳,第一篇文章是关于高精度算法种最最简单的加法(只适用于正数+正数),后续文章会陆续讲解高精度减法.乘法,除法,取模,开方等等问题(当然了,蒟蒻水平有限,若是有什么问题或疑惑也欢迎大家提出来,我尽量在第一时间思考并回复,若是我也解决不了,我一定想办法给大家提出解决的路径),欢迎点赞,评论,你的支持会是我最大的鼓励,谢谢QVQ原创 2020-06-29 22:38:12 · 1303 阅读 · 0 评论