算法竞赛入门CE: Compiler Error : 编译错误,检查语法,是否少头文件,有些编译器会给你自动补全某些你缺失的cin.tie(0);AC: Accepted : 通过慢输入,优化自己的代码。不要将main函数写成voidmain()头文件。局部变量需要初始化main函数返回值非0。MLE: Memory Limit Exceeded, 内存超限,检测自己数组是不是开的太大了。RE: Runtime Error : 运行错误,数组越界访问(大部分情况),除以0,模0,函数递归过深导致爆栈,严格按照输入输出格式,不要有任何额外的输出WA: Wrong Answer: 回答错误,检查代码逻辑如果你的答案有很多行,千万不要用endl基本注意事项TLE: Tme Limit Exceeded ,检查自己的算法是否足够有些,是否出现死循环,是否使用了endl,cin等ios::syncwithstdio(false);对于大数组,不要定义到局部,否则可能会爆栈。
基本数论向下取整:,从左到右找到离结果最近的整数,比如=5,=-6, 对于正整数,向{子,可以用反证法证。互素,如果两个数最大公因数为则称两个数互素最大公因数 gcd (greatest common divisor)明,当学到exgcd时可以重点学习证明。intgcd(intx,inty)我们这里不考虑负数的情况向上取整,从右到左找离结果最近的整数。returnfalse;returnfalse;{if(x%i0)gcd函数很好写,但是证明可能需要一点时间,这其实和小学学过的短除法是一个算法,这里先不讲证if(y0)一些数学概念}if(x<=1)for(inti=2;i*i<=x;i++){判断素数整除,如果我们称整除,记作,即是的因数returngcd(y,x%y);下取整就是去掉小数部分,编程语言中整数除法一般也是去掉小数部分。判断是否为素数,我们只需要枚举中是否有数能整除,一个素数不存在小于其平方的非1因boolisprime(intx)returnx;}returntrue;}。
数位拆分我们不断取模,加除法可以对一个整数进行拆分:voidsolve(){
x/=10;
intx=1234567;//拆分都是从最低为拆分的,也就是从个位开始,从右到左
//处理这个数位
while(x){
intdigit=x%10;
}
}
算法小知识
最新推荐文章于 2024-05-26 15:26:25 发布