习题功课:
洛谷P1037 产生数
1.
用ios::sync_with_stdio(false)有什么作用
因为系统默认standard stream应该都是同步的,设置sync_with_stdio(false),其实应该是让C风格的stream和C++风格的stream变成async且分用不同buffer。
注意:
1.ios::sync_with_stdio(false)不可以与scanf混用,否则会造成异常。
2.虽然ios::sync_with_stdio对cin有加速所用,但是还是没有scanf的速度快
2 floyd算法
int floyd() {
for(int k=0; k<=9; k++) // floyed 寻找i,j之间是否有通路
for(int i=0; i<=9; i++)
for(int j=0; j<=9; j++)
if(vis[i][k]&&vis[k][j])
vis[i][j] = vis[i][j] || (vis[i][k] && vis[k][j]);
}
或者
int floyd() {
for(int k=0; k<=9; k++) // floyed 寻找i,j之间是否有通路
for(int i=0; i<=9; i++)
for(int j=0; j<=9; j++)
if(dis[i][k]&&dis[k][j])
dis[i][j]=1;//证明i/j之间有通路。
}
3高精度加法
当C++中计算的数据位数超过了自身所具有的位数,那么在计算中就容易出错。高精度计算就是自己编程,自己进行计算。下面介绍一些关于高精度的计算。
高精度的计算主要就是模拟手工计算,比如加法,我们小学的时候通常学过使用竖式计算。
现在我们一起来回忆一下竖式计算的过程:
比如对于473+259,我们可以列出竖式:
473
+259
732
上面的过程是这样的:
第一个加数的个位3与第二个加数的个位9相加,得到12,保留2,进1;然后7+5等于12,12要加上之前的进位1,为13,保留3,进1;最后4+2等于6,再加上进位1,得到7,保留7,无进位。所以最终的答案为732
(具体可看收藏种高精度算法报告)