1 solutions
-
0
若我们令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