我想要获得1到N之和所需的最小元素范围。 假设如果给出1和N之间的数字K,那么我想要总和为K的最小数字范围。
Example: k = 4
To get k=4 {1,2,3} numbers form 1-3 is enough since 1+3=4
So 3 numbers is enough.
Similarly if k=10 1-4 numbers is enough since 1+2+3+4=10
So 4 numbers is enough.
答案 0 :(得分:0)
如果你必须使用范围1..N来获得一些N,那么你可以得到那些最多1 + 2 + ... + N = N(N + 1)/ 2的数字。因此,如果你的数字是x,求解N(N + 1)/ 2 - x = 0,即x =(sqrt(8x + 1) - 1)/ 2并取这个数字的上限。
#include <math.h>
needed(int x) {
double s = sqrt(8*x+1);
return ceil((s-1)/2);
}