题目
给定两个数 n,k
定义 F(x) 为 i 从 1~x i%k==0 的 i 的和
求出
解题思路
F(x):
sum = 0
for i = 1 to x:
if i%k == 0:
sum += i即
int F(int x){
sum = 0;
for(i=k; i<x; i+=k)
sum += i;
// 上面的 for 循环是一个等差数列,即 sum = k + 2*k + 3*k + ...
}C++代码
#include<iostream>
using namespace std;
inline long long f(long long x, long long k){
long long n = x / k;
long long sum = (k+n*k)*n/2;
return sum;
}
int main(){
int n, k;
cin >> n >> k;
long long ans = 0;
for(int i=1; i<=n; ++i){
ans += f(i,k);
}
cout << ans << endl;
return 0;
} 
京公网安备 11010502036488号