Surge_of_Force @ 2021-02-14 12:40:28
各位dalao 为什么我这样加和进位一起只过两个点
for(int i=3;i<=n;i++)
for(int j=1;j<=1200;j++)
{
a[i][j]=a[i-1][j]+a[i-2][j];
while(a[i][j]>9)
{
a[i][j+1]++;
a[i][j]-=10;
}
}
而这样分开就A了呢
for(int i=3; i<=n; i++) {
for(int j=1; j<=1200; j++) {
a[i][j]=a[i-1][j]+a[i-2][j];
}
for(int j=1; j<=1200; j++) {
while(a[i][j]>9) {
a[i][j+1]++;
a[i][j]-=10;
}
}
}
感谢
by Surge_of_Force @ 2021-02-14 12:41:55
开二维数组是为了高精 不想开字符串
by LYNiko @ 2021-02-15 11:49:19
因为while循环中用到了a[i][j+1],而这个是要先通过第一个for循环初始化的
用第一种方法,在进位后会被下一次的循环覆盖掉;
而用第二种,就是正解:先按位累加,再逐个进位
(洛谷吞评论qwq)