@Dmaxiya
2022-02-12T12:42:31.000000Z
字数 2273
阅读 1637
Hello_World
运行时间计算方式:
如:对 ~ 进行求和,若使用如下代码:
long long sum = 0, i;for(i = 1; i <= 1000000000LL; ++i) {sum += i;}
则程序执行的次数为 ,需要 10s,若使用如下代码:
long long sum = (1 + 1000000000LL) * 1000000000LL / 2;
则程序执行的次数为 ,所需要时间为 。
实际代码的运行时间可能少于估计值,但大多数题目的数据都能保证:若程序运行次数超过 必然返回超时。
计算以下题目的时间复杂度:
参考题目:P1601 A+B Problem(高精)
参考代码:https://www.luogu.com.cn/paste/e237i3pn
int add(int *a, int lena, int *b, int lenb, int *c) {int s = 0;int len = max(lena, lenb);for (int i = 0; i < len; ++i) {c[i] = s + a[i] + b[i];s = c[i] / 10;c[i] %= 10;}if (s != 0) {c[len++] = s;}return len;}
int sub(int *a, int lena, int *b, int lenb, int *c) {int s = 0;int aa, bb;int len = max(lena, lenb);for(int i = 0; i < len; ++i) {aa = a[i];if(i >= lenb) {bb = 0;} else {bb = b[i];}c[i] = (aa - bb - s + 10) % 10;if(aa < bb + s) {s = 1;} else {s = 0;}}for (int i = maxn - 1; i >= 0; --i) {if (c[i] != 0) {return i + 1;}}return 1;}
参考题目:P1045 [NOIP2003 普及组] 麦森数
参考代码:https://www.luogu.com.cn/paste/dyv59ovw
int mult(int *a, int lena, int *b, int lenb, int *c) {for (int i = 0; i < lena; ++i) {for (int j = 0; j < lenb; ++j) {c[i + j] += a[i] * b[j];}}int cc = 0;for (int i = 0; i < lena + lenb; ++i) {c[i] += cc;cc = c[i] / 10;c[i] %= 10;}int idx = lena + lenb;while (cc != 0) {c[idx++] = cc % 10;cc /= 10;}for (int i = maxn - 1; i >= 0; --i) {if (c[i] != 0) {return i + 1;}}return 1;}
参考代码:https://www.luogu.com.cn/paste/dyv59ovw
思路1:
思路2(代码更好写):
参考代码:https://www.luogu.com.cn/paste/p12panu1
参考代码:https://www.luogu.com.cn/paste/oaufv02y
这题不太好讲,我也看不懂别人的题解,直播的时候再说,希望能把大家讲明白
参考代码:https://www.luogu.com.cn/paste/takzq46c
参考代码:https://www.luogu.com.cn/paste/8vbtwifq
参考代码:https://www.luogu.com.cn/paste/6u96nsc0
参考代码:https://www.luogu.com.cn/paste/3po7fba8
直接讲自己的思路
