這個題很神奇的地方是平方根幾次以後會變成1,然後就不用再計算了,而是直接返回,可以節省時間。
這個題要用到long long,還是直接全部變數都開long long 的好,要不然可能會出錯,還可能tle。
#pragma warning(disable:4996)
#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
struct node
;node tree[100005<<2];
ll a[100005];
ll ans;
void build(ll l, ll r,ll k)
int mid = (l + r)/ 2;
build(l, mid, 2 * k);
build(mid + 1, r, 2 * k + 1);
tree[k].sum = tree[2 * k].sum + tree[2 * k + 1].sum;
}void update(ll l, ll r, ll k)
//if (tree[k].l > r || tree[k].r < l)return;
if (tree[k].l >= l && r >= tree[k].r && ((tree[k].r - tree[k].l + 1) == tree[k].sum))return;
//當這個區間的數全為1的時候,直接返回
if (tree[2 * k].r >= l)update(l, r, 2 * k);
if (tree[2 * k + 1].l <= r)update(l, r, 2 * k + 1);
tree[k].sum = tree[2 * k].sum + tree[2 * k + 1].sum;
}void query(int l, int r, int k)
if (tree[2 * k].r >= l)query(l, r, 2 * k);
if (tree[2 * k + 1].l <= r)query(l, r, 2 * k + 1);
}int main()
//真的搞不懂,題上啥都沒說,但是有t2>t3的情況
if (t1 == 0)update(t2, t3, 1);
else if (t1 == 1)
}printf("\n");//記得輸出格式
} return 0;
}
LintCode x的平方根
x的平方根 實現 int sqrt int n 函式,計算並返回 n 的平方根。樣例 sqrt 3 1 sqrt 4 2 sqrt 5 2 sqrt 10 3 挑戰 o log x solution 如果使用蠻力法來求解的話,肯定是會超時的。因此,我們需要使用牛頓迭代法來求解這問題 牛頓迭代法 對於...
x的平方根
題目三十九 實現int sqrt int x 函式,計算並返回 x 的平方根。您在真實的面試中是否遇到過這個題?yes 樣例sqrt 3 1 sqrt 4 2 sqrt 5 2 sqrt 10 3 挑戰 o log x class solution if i ix return i if i i x...
LeetCode x的平方根
在網上學習了其他人的方法以後,寫了出來,學到了新的方法,在此記錄一下 1,返回整型的時候,可以使用二分法 2 返回double時,可以使用牛頓迭代法,a 求取乙個整數的平方根時,其平方根一定是不大於 n 2 1 所以在 0,n 2 1 這個範圍內求取,如下 int mysqrt int x if m...