警示后人!!!!!
查看原帖
警示后人!!!!!
892470
DL_Lingkong楼主2024/8/22 10:06

如果你 WA on #3,5,8,9,11 且你的循环是这么写的:

for(i = 1;i <= n;i = j + 1)
{
  if(k / i == 0)
  {
    break;
  }
  j = k / (k / i);
  ans -= (k / i) * ((i + j) * (j - i + 1) / 2);
}

请把 k / (k / i) 改为 min(n,k / (k / i)),再在循环末尾加上如下代码:

if(j == n)
{
  break;
}

因为有可能 n<kn < k 导致 ii 计算到 ≥n+1\ge n + 1 的范围去。

md卡了我两天现在感觉自己像个若只

2024/8/22 10:06
加载中...