数据范围只有
1
0
5
10^5
105所以我们可以直接暴力枚举,然后我们知道假操作一定是在最开始进行,至于加多少次我们可以直接枚举
class Solution {
public:
int minOperations(int k) {
// 只可能先加后叠加
if (k == 1) return 0;
int ans = 0x7ffffff;
int now = 1;
for (int i = 1; i <= k; i++) {
now = now + i;
int temp = i + k / (now)+k % now ? 1 : 0;
ans = min(ans, temp);
}
return ans;
}
};