如何求出Sigma 1~n mod k
  • 板块学术版
  • 楼主Manki23333333
  • 当前回复13
  • 已保存回复13
  • 发布时间2023/10/2 00:39
  • 上次更新2023/11/2 16:39:40
查看原帖
如何求出Sigma 1~n mod k
871004
Manki23333333楼主2023/10/2 00:39

题面:

模数和

题目描述

给一个 nn 和 kk,求下列式子的和

​ ∑i=1ni\sum\limits_{i = 1}^{n} i modmod kk

这个和有可能非常大,请输出它对 109+710^9+7 取模的结果

输入格式

输入仅一行,两个正整数,代表 n,kn,k

输出格式

输出仅一行,一个正整数,表示答案

样例 #1

样例输入 #1

10 3

样例输出 #1

10

提示

对于 4040% 的数据,n,k≤1,000n,k≤1,000

对于另外 2020% 的数据,n,k≤106n,k≤10^6

对于另外 2020% 的数据,n≤109,k≤106n≤10^9,k≤10^6

对于 100100% 的数据,n≤1018n≤10^{18},k≤109k≤10^9

我的代码(5 pts):

#include <bits/stdc++.h>

using namespace std;

const int Mod = 1e9 + 7;

long long dxsl (long long r) {
	return ((r * (r - 1)) % Mod) / 2;
}

int main () {
	long long n, k;
	
	cin >> n >> k;
	
	long long m = (n / k) % Mod;
	
	long long p = dxsl (k);
	
	long long f = n % k;
	
	cout << ((((m * p) % Mod) + f) % Mod);
	
	return 0;
}
2023/10/2 00:39
加载中...