求助,可以不用分块吗
查看原帖
求助,可以不用分块吗
566190
我是歌者楼主2023/7/27 11:16
#include<bits/stdc++.h>
using namespace std;
long long int n,k,ans=0;
int main(){
	cin>>n>>k;
	int s=sqrt(k);
	if(s*s==k){
	    for(int i=1;i<=s;i++){
	    	ans+=k%i;       
	    }
	    int a=k-s;
	    ans+=a*k-(k+s)*((k-s)/2);//一半以后k%i=k-i 所以全部加起来 k*(k-s)-(s到k)的和 
	    if(n>k){
	    	ans+=(n-k)*k; //n>k k%i=k
	    }
	    cout<<ans;
	}
	else{
	    for(int i=1;i<=s;i++){
	    	ans+=k%i;        //一半以前 
	    }
	    int a=k-s;
		ans+=a*k-(k+s+1)*(k-s)/2;
	    if(n>k){
	    	ans+=(n-k)*k; //n>k k%i=k
	    }
	    cout<<ans;
	}
	
	return 0;
}

全红了。

2023/7/27 11:16
加载中...