1 solutions

  • 0
    @ 2024-12-15 11:22:44

    若我们令n=8,则很容易可以推出以下式子

    i=2 gcd(1,3)=1

    i=3 gcd(3,6)=3

    i=4 gcd(6,10)=2

    i=5 gcd(10,15)=5

    i=6 gcd(15,21)=3

    i=7 gcd(21,28)=7

    i=8 gcd(28,36)=4

    很容易看出这是一个奇偶分组求和

    T=n/2,p=(n+1)/2; (T表示i为偶数数量,P表示i为奇数数量,)

    Sn=(T^2+T)/2

    Sn1=P^2 (注意若首项为1则更容易算出简洁的通项,在最后减掉1即为正确答案)

    下面是c++的解题代码,数论题和语言无关,理解之后自行根据自己的语言写

    #include <iostream>
     
    typedef long long ll;
     
    int main() {
        ll n;
        std::cin >> n;
         
        ll oddCount = (n + 1) / 2;  // 奇数的个数
        ll evenCount = n / 2;       // 偶数的个数
         
        ll oddSum = oddCount * oddCount;   // 奇数的和
        ll evenSum = ((evenCount * evenCount)+evenCount)/2; // 偶数的和
         
        ll sum = (oddSum + evenSum) % 1000000007; // 总和
        //std::cout<< oddSum <<" "<<evenSum <<std::endl;
        std::cout << sum-1 << std::endl;
     
        return 0;
    }
    
    • 1

    Information

    ID
    5619
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    4
    Tags
    # Submissions
    53
    Accepted
    1
    Uploaded By