示例1
输入
3 3
输出
6
示例2
输入
3 9
输出
14
题意:
正整数二元组Legend Tuple (n, k)是这样定义的
(1, k)总是Legend Tuple
若(n, k)是Legend Tuple,那么(n+ k, k)也是
若(n,k)是Legend Tuple,那么(nk, k)也是
统计有多少个Legend Tuple(n, k)满足1≤n≤N,1≤k≤K,其中N和K是不超过10¹²的整数
代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll mod=1e9+7,n,k,ans;
void solve(ll n)
{
ll i, j;
for(i = 2; i <= n && i <= k; i = j+1){
j = min(n/(n/i), k);
(ans+=(j-i+1)%mod*(n/i)%mod) %= mod;
}
}
int main()
{
scanf("%lld%lld", &n, &k);
solve(n);
solve(n-1);
printf("%lld\n", (ans+n+k-1)%mod);
return 0;
}