bzoj 1257: [CQOI2007]余数之和sum 数论
生活随笔
收集整理的這篇文章主要介紹了
bzoj 1257: [CQOI2007]余数之和sum 数论
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1257: [CQOI2007]余數(shù)之和sum
Time Limit: 1 Sec??Memory Limit: 256 MB
題目連接
http://www.lydsy.com/JudgeOnline/problem.php?id=1257Description
給出正整數(shù)n和k,計(jì)算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余數(shù)。例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7Input
輸入僅一行,包含兩個(gè)整數(shù)n, k。Output
輸出僅一行,即j(n, k)。
Sample Input
5 3Sample Output
7HINT
50%的數(shù)據(jù)滿足:1<=n, k<=1000 100%的數(shù)據(jù)滿足:1<=n ,k<=10^9題意
題解:
數(shù)學(xué)題先打表,然后我們就可以得到一個(gè)規(guī)律,在k/l==k/r的這個(gè)范圍內(nèi),模數(shù)是一個(gè)等差數(shù)列 知道這個(gè)性質(zhì)之后,我們就可以二分來(lái)搞定對(duì)于每一個(gè)k/l的結(jié)尾,然后再搞一搞就好了代碼:
?
//qscqesze #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 200001 #define mod 10007 #define eps 1e-9 //const int inf=0x7fffffff; //無(wú)限大 const int inf=0x3f3f3f3f; /* inline ll read() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; } int buf[10]; inline void write(int i) {int p = 0;if(i == 0) p++;else while(i) {buf[p++] = i % 10;i /= 10;}for(int j = p-1; j >=0; j--) putchar('0' + buf[j]);printf("\n"); } */ //**************************************************************************************int main() {ll n,k;cin>>n>>k;//for(int i=1;i<=m;i++)// cout<<n%i<<endl;ll now=1;ll ans=0;while(now<=n){ll l=now,r=n+1;while(l+1<r){ll m=(l+r)/2;if((int)(k/m)==(int)(k/now))l=m;elser=m;}ans+=(l-now+1)*(k%now+k%l)/2;now=l+1;}cout<<ans<<endl; }?
轉(zhuǎn)載于:https://www.cnblogs.com/qscqesze/p/4409463.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的bzoj 1257: [CQOI2007]余数之和sum 数论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。