超氧化钾
Description
作為一個化學小考只有77分的同學,小W感覺很有壓力,所以他決定搞化學。今天他開始研究超氧化鉀,這是一種很神奇的離子化合物,在高溫下空間結構是立方體,如下圖所示。有一天教黃交給了小W一個任務:根據教黃多年淘金的經驗,他發現超氧化鉀有一個神奇的性質就是如果一組有序的整數(x,y,z)滿足z=x mod 1+x mod 2+…+x mod y,那么對于超氧化鉀來說這個位置上的離子就是一個關鍵離子。通過用回旋加速器得到高速粒子來攻擊這個離子,他就可以獲得銅鋁制金法的催化劑。現在教黃想知道對于一個給定的x和y對應的z值是多少。
Input
兩個整數x,y。
Output
一個整數z。
Sample Input
1 1
Sample Output
0
Data Constraint
40%的數據,y<=10^5。
100%的數據,1<=x,y<=10^9。
.
.
.
.
.
.
分析
對于一段連續的i…j,如果除k的商相同,那么除k的余數是一個等差數列。這樣每一段都可以O(1)求出。
這樣問題就變成了對于k/i=p,找到最大的j,使n/j=p。不難發現,若p=0,則j=n。否則j=k/p。
.
.
.
.
.
程序:
#include<iostream> #include<cstdio> using namespace std;int x,y,j,x1,y1; long long ans;int main() {scanf("%d%d",&x,&y);for (int i=1;i<=y;i=j+1){int p=x/i;if (p==0) j=y; else j=min(x/p,y);x1=x%i;y1=x%j;ans+=(long long)(x1+y1)*(j-i+1)/2;}printf("%lld\n",ans);return 0; }轉載于:https://www.cnblogs.com/YYC-0304/p/10458947.html
總結