Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- long long m, d, mid, high, low=0, mini=1000000000;
- int check(long long num)
- {
- long long divi = 1, day=1, sum=0;
- while (num/divi > 0)
- {
- if (sum > m) return 0;
- else if (sum == m) return 1;
- if (day == 1) sum += num;
- else if (day == 2) sum += num/day;
- else
- {
- divi *= d*(d+day-2);
- sum += num/divi;
- }
- day++;
- }
- return 2;
- }
- int main()
- {
- cin >> m >> d;
- high = m;
- while (low < high)
- {
- mid = (high + low) / 2;
- if (check(mid) == 1)
- {
- mini = mid;
- break;
- }
- else if (check(mid) == 0)
- {
- if (mid < mini) mini = mid;
- high = mid;
- }
- else low = mid;
- }
- cout << mini;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement