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;
}

京公网安备 11010502036488号