提问者:小点点

编写一个程序,求在O(1)时间复杂度下给定区间(含)之间可被3和5整除的数的和[闭]


这是我的代码似乎没有清除Faceprep平台中的所有测试用例。

#include<bits/stdc++.h>
using namespace std;

long int sumn(long int n) {
    if(n%2==0)
        return (n/2)*(n+1);
    return n*(n+1)/2;
}

void func(long int a, long int b) {
    long int x = (a-1)/15;
    long int y = (b+1)/15;
    cout<<15*sumn(y)-15*sumn(x);
}

int main() {
    long int a, b;
    cin>>a>>b;
    func(a,b);
    return 0;
}

共1个答案

匿名用户

你为什么要从a中减去1,然后把1加到b中?我认为你不应该这样做。 在func函数中,使用sumn(x-1),因为它包含在端部。