想要真正理解这个题的本质真的很难,但可以根据题目中给出的公式进行把代码写出来
#includeusing namespace std; int main() { long long n, sp, sq;//定义long long 防止溢出 long long minK, minA, minB, A, B; while (cin >> n >> sp >> sq) { minK = n * sq << 10; // 因为是int 类型所有只需让A<32即可 for (A = 0; A < 32; A++) for (B = 0; B < 32; B++) { long long tp = (((n - 1) * sp + ((n - 1) * sp << A)) >> B) + sq; //套用前面的公式,根据第一和第二个公式计算q if (tp >= n * sq && tp < minK)//算出新的A和Bmink用的 { minK = tp; minA = A; minB = B; } } cout << minK << " " << minA << " " << minB << endl; } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)