叽里呱啦。

来源:互联网 发布:mac上传图片 编辑:程序博客网 时间:2024/05/16 13:05

1.关于for循环的i值
for(int i=1①;i<=n②;i++③)
在这个for循环中,先执行①,再判断②,若符合则进入循环体,结束循环体后执行③语句。所以在整个循环结束时,i实际上等于n+1.

2.一种输入方式。
while(scanf(“%d”,&a)=EOF)
或者 while(scanf(“%d”,&a)=-1)
或者while(cin>>a)
即直接输入,等没输入了就结束循环。

注意:EOF标识的全称是end of file,文件的结束。
以上三种,在读入数据的时候都需要采用文件(file)读入,用键盘读入会导致死循环。

3.判断互质
这里写图片描述

4.判断欧拉回路
这里写图片描述
源:洛谷 redmag

5.快读(只能读整数)

void read(int &x){    int f=1;x=0;char s=getchar();    while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}    while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}    x*=f;}

主程序里调用直接read(变量名)就okey了!源:csdn@临邛道士。

6.同余原理
(a+b+c)%k=((a+b)%k+c)%k
乘法同加法。
(a-b-c)%k=(((a-b)%k-c)%k+k)%k
另:这里写图片描述

7.关于位运算
进行移位操作<<>>的时候要注意这个函数类型的范围。例如
这里写图片描述
涉及n>>16,如果用longlong会出现多余的那32位也参与操作。
注意int类型最高位表示正负,而unsigned int即无符号类型,最高位仍存数。
位运算优先级几乎最低,表达式里记得加括号。

8.树的重心。
即找到一个点,其所有的子树中最大的子树节点数最少。

9.求序列累加和
求i~j的累加和=sum[j]-sum[i-1].
最大子序列累加和
这里写图片描述

10.
double类型数判断相等不要直接==,用两者之差取绝对值与某一参考值比较,小于其范围即判断为相等。
因为浮点数由于其存储方式,在运算(尤其是存储)中易产生误差。
double类型,例如double p=(a+b)/2;由于右端表达式为整数除法,所以当a+b为奇数时,小数会自动舍去。可采取强制转换或改为/2.0。

11.编译
可在编译选项中打开-wall,可显示最多的警告,如if(a=b)这种错误会被报错。

12.输出ASCII码
定义一个字符变量,键盘输入赋值给该变量,以整型输出该字符就是该字符的ASCII值。即:printf(“%d”,ch);就可以输出字符变量ch的ASCII码。

原创粉丝点击