首先要有n个1,然后开始从2到m依次判断,记录当前总和,如果不足n捆则向上取整补充,数据范围1e12,虽然很大,但是在高位的是时候可以直接跳过,所以运行速度实际很小,具体实现看代码;
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ios::sync_with_stdio(false);
ll n, m;
while(cin >> n >> m)
{
ll sum = n;
ll i = 2;
ll num = n;
while(i <= m)
{
if(sum < i * n)
{
ll x = sum / i;
if(n > x)
{
sum += (n - x) * i;
num += (n - x);
}
}
ll x = sum / n;
i = x + 1;
}
cout << num << endl;
}
return 0;
}