3 条题解
-
1
#include<bits/stdc++.h> using namespace std; #define int long long int n,k; long long ans; signed main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n>>k; ans=n*k; long long cnt=0; for(int i=1;i*i<=k;i++)//在 i*i<k 时枚举 i { cnt=k/i; ans-=(k/i)*i; } signed d=k/n; for(int i=max(1,d);i<cnt;i++)//在 i*i>k 时枚举 k/i 但不是从1开始,有时 n<k 从 n/k 开始 如 n=9 k=53(数据在下面); { int maxa=k/i; int mina=k/(i+1)+1; maxa=min(maxa,n); int z=(maxa+mina)*(maxa-mina+1)/2; ans-=z*i; } cout<<ans; return 0; } /* n=9 k=53 i k/i 1 53 2 26 3 17 4 13 5 10 6 8 7 7 8 6 9 5 */
信息
- ID
- 1260
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 100
- 已通过
- 15
- 上传者