社区讨论

(r-l+1)*(r+l)/2*(k/l)与(k/l)*(r-l+1)*(r+l)/2有不同吗?

P2261[CQOI2007] 余数求和参与者 6已保存回复 12

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
12 条
当前快照
1 份
快照标识符
@mi7ynqs2
此快照首次捕获于
2025/11/21 05:46
4 个月前
此快照最后确认于
2025/11/21 06:44
4 个月前
查看原帖
rt
详见
误:
CPP
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,k,ans;
int main()
{
    scanf("%lld%lld",&n,&k);
    ans=n*k;
    for(int l=1,r;l<=n;l=r+1)
    {
        if(k/l!=0) r=min(k/(k/l),n);
        else r=n;
/**/    ans-=(r-l+1)*(r+l)/2*(k/l);
    }
    printf("%lld\n",ans);
    return 0;
}
正:
CPP
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,k,ans;
int main()
{
    scanf("%lld%lld",&n,&k);
    ans=n*k;
    for(int l=1,r;l<=n;l=r+1)
    {
        if(k/l!=0) r=min(k/(k/l),n);
        else r=n;
/**/    ans-=(k/l)*(r-l+1)*(r+l)/2;
    }
    printf("%lld\n",ans);
    return 0;
}

回复

12 条回复,欢迎继续交流。

正在加载回复...