0 of 2 Questions completed
Questions:
You have already completed the quiz before. Hence you can not start it again.
Quiz is loading…
You must sign in or sign up to start the quiz.
You must first complete the following:
0 of 2 Questions answered correctly
Your time:
Time has elapsed
You have reached 0 of 0 point(s), (0)
Earned Point(s): 0 of 0, (0)
0 Essay(s) Pending (Possible Point(s): 0)
27. (快速幂)请完善下面的程序,该程序使用分治法求 mod m 的值。
输入:三个不超过 10000的正整数 x, p, m。
输出: mod mm 的值。
提示:若 p 为偶数, = ;若 p为奇数,。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> using namespace std; int x, p, m, i, result; int main() { cin >> x >> p >> m; result = ①; while(②) { if(p % 2 == 1) result = ③; p /= 2; x = ④; } cout << ⑤ << endl; return 0 ; } |
填空位置 ①
填空位置 ②
填空位置 ③
填空位置 ④
填空位置 ⑤
28. (切割绳子)有 n 条绳子,每条绳子的长度已知且均为正整数。绳子可以以任意正整数长度切割,但不可以连接。
现在要从这些绳子中切割出m条长度相同的绳段,求绳段的最大长度是多少。输入:第一行是一个不超过 100 的正整数 n,
第二行是 n 个不超过 10^6 的正整数,表示每条绳子的长度,第三行是一个不超过 10^8 的正整数 m。
输出 :绳段的最大长度,若无法切割,输出Failed
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <iostream> using namespace std; int n, m, i, lbound, ubound, mid, count; int len[100]; //绳子长度 int main() { cin >> n; count = 0; for (i = 0; i < n; i++) { cin >> len[i]; ①; } cin >> m; if (②) { cout << "Failed" << endl; return 0; } lbound = 1 ; ubound = 1000000 ; while (③) { mid = ④; count =0 ; for (i = 0; i < n; i++ ) ⑤; if (count < m) ubound = mid - 1 ; else lbound = mid ; } cout << lbound << endl; return 0; } |
填空位置 ①:
填空位置 ②:
填空位置 ③:
填空位置 ④:
填空位置 ⑤: