P2261 [CQOI2007] 余数求和

题目描述

给出正整数n和k,请计算

G(n,k)= ∑(i=1->i=n) k mod i

其中k mod i表示k除以i的余数。

输入格式

输入只有一行两个整数,分别表示n和k。

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1复制

10 5

输出 #1复制

29

说明/提示

样例 1 解释

G(10,5)=0+1+2+1+0+5+5+5+5+5=29。

数据规模与约定

对于?30%?的数据,保证 n,k≤10^3。

对于?60%?的数据,保证 n,k≤10^6。

对于?100%?的数据,保证 1≤n,k≤10^9。

由 k mod i -> x

so

分块后

由于 每块的 [k/i] 相同,so i 用等差数列的 Sn=n*(a1+an)/2 计算,最后乘个[k/i] 即可;

注意 ;

warning !

1:(k/l)在l>k时可能为0,so 为0,break;

2:由l推出来的 r 可能 > n,so r>n时,r=n;

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
//#pragma GCC optimize(2)
#define  endl '\n'
#define lowbit(x) ((x)&-(x))
const int mod=998244353;
typedef long long ll;
ll ans=0,n1,m1;
ll t,s1,s2,s3,s4,max1=0,min1=100000000,sum=0,n,m,i,j,k,l,r;
ll u[200005],w,v[200005];
inline int read() {
	bool sym=0;
	int res=0;
	char ch=getchar();
	while(!isdigit(ch))sym |=(ch =='-'),ch=getchar();
	while(isdigit(ch)) res =(res<<3)+(res<<1)+(ch^48),ch=getchar();
	return sym ? -res : res;
}
void print(int x) {
	if(!x)return;
	print(x/10);
	putchar(x%10+'0');
}
int isPrime(int n) {
	float n_sqrt;
	if(n==1) return 0;
	if(n==2 || n==3) return 1;
	if(n%6!=1 && n%6!=5) return 0;
	n_sqrt=floor(sqrt((float)n));
	for(int i=5; i<=n_sqrt; i+=6) {
		if(n%(i)==0 | n%(i+2)==0) return 0;
	}
	return 1;
}



/*ll cal(ll n) {
	ll res = 0;
	for(ll l = 1, r; l <= n; l = r + 1) {
		r = n / (n / l);
		res += n / l *(r-l+1)+ (l+r) * (r - l + 1)/2 ;// 等差数列 求和
	}
	return res;
}*/

int main() {


	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);


	cin>>n>>k;
	s1=n*k;
	
	for(l=1; l<=n; l=r+1) {
		if((k/l)<=0)
		break;//特判2 
		r=k/(k/l);
		
		if(r>n)
		r=n;//特判1 
		
		ans+=(k/l)*(l+r)*(r-l+1)/2;
	}
	cout <<s1-ans<< endl;

	return 0;
}


//mio lover
相关推荐
机器学习之心2 分钟前
一区北方苍鹰算法优化+创新改进Transformer!NGO-Transformer-LSTM多变量回归预测
算法·lstm·transformer·北方苍鹰算法优化·多变量回归预测·ngo-transformer
yyt_cdeyyds13 分钟前
FIFO和LRU算法实现操作系统中主存管理
算法
daiyang123...35 分钟前
测试岗位应该学什么
数据结构
alphaTao39 分钟前
LeetCode 每日一题 2024/11/18-2024/11/24
算法·leetcode
kitesxian1 小时前
Leetcode448. 找到所有数组中消失的数字(HOT100)+Leetcode139. 单词拆分(HOT100)
数据结构·算法·leetcode
VertexGeek1 小时前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
石小石Orz1 小时前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
jiao_mrswang2 小时前
leetcode-18-四数之和
算法·leetcode·职场和发展
qystca2 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
薯条不要番茄酱3 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea