for i in range(2,100+1):
    print("==>>{}   gcd={}".format(i,gcd((i*(i+1))//2,i*(i-1)//2)))

打表观察可知

==>>2   gcd=1
==>>3   gcd=3
==>>4   gcd=2
==>>5   gcd=5
==>>6   gcd=3
==>>7   gcd=7
==>>8   gcd=4
==>>9   gcd=9
==>>10   gcd=5
==>>11   gcd=11
==>>12   gcd=6
==>>13   gcd=13
==>>14   gcd=7
==>>15   gcd=15
==>>16   gcd=8

为i奇数的时候,结果为本身,为偶数的时候,结果为i//2 等差数列公式计算即可

def solve():
    mod = 10**9 + 7
    n = int(input())
    # 奇数部分
    k = (n - 1) // 2
    odd_sum = k * (k + 2)
    # 偶数部分
    m = n // 2
    even_sum = m * (m + 1) // 2
    
    ans = (odd_sum + even_sum) % mod
    print(ans)

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

static const long long MOD = 1e9 + 7;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    long long n;
    cin >> n;

    // 奇数部分:3,5,...,(2k+1)
    long long k = (n - 1) / 2;
    long long odd_sum = (k % MOD) * ((k + 2) % MOD) % MOD;

    // 偶数部分:1+2+...+m
    long long m = n / 2;
    long long even_sum = (m % MOD) * ((m + 1) % MOD) / 2 % MOD;

    long long ans = (odd_sum + even_sum) % MOD;
    cout << ans << "\n";

    return 0;
}