1 条题解
-
1赵青海 (huhe) LV 7 SU @ 2021-8-7 21:30:14
C++ :
#include <iostream> #include <cstdio> using namespace std; typedef long long ll; int main() { ll n,m,ans1,ans2,len,now,L,R,t; while(~scanf("%lld %lld",&n,&m)) { ans1 = ans2 = 0; t = 1; /*for(int i = 1; i <= n; i++) ans1 += m % i;*/ if(n >= m) ans2 = (n - m) * m,n = m; /*for(int i = 1; i <= m; i++) cout<<i<<":"<<m % i<<endl;*/ L = 0; now = m; while(true) { t++; R = m / t + 1; if(R > now) break; if(R > n) { now = m / t; L = m % now; continue; } len = now - R + 1; R = L + (len - 1) * (t - 1); if(now > n) { L = m % n; len = n - m / t; } ans2 += (R + L) * len / 2; now = m / t; if(!now) break; L = m % now; } for(int i = min(now,n); i >= 2; i--) //提前跳出来的数有可能大于n; ans2 += m % i; cout<<ans2<<endl; } }
- 1
信息
- ID
- 110
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 51
- 已通过
- 27
- 上传者