【HIHOCODER 1420】 Bigint Multiplication】的更多相关文章

描述 Given 2 nonnegative integers a and b, calculate a × b. 输入 One line with 2 integers a and b separated by a single space. 0 ≤ a, b ≤ 10100. 输出 The value of a × b. 样例输入 100000000000000000000 100000000000000000000 样例输出 10000000000000000000000000000000…
[题目链接]:http://hihocoder.com/problemset/problem/1298 [题意] [题解] 用欧拉筛法; 能够同时求出1..MAX当中的所有质数和所有数的欧拉函数的值; 基于 以下理论; 如果 ① n=p^k;这里p是某个质数; (则只有p的倍数和n是不互质的) 则 phi[n]=pk−1−(pk/p−1)=(p−1)∗pk−1 ② n为质数; phi[n] = n-1 ③ 若n和p互质;则 phi[n∗p]=phi[n]∗phi[p] 根据上面那3个结论; ①若…
[题目链接]:http://hihocoder.com/problemset/problem/1297 [题意] [题解] 问题可以转化为数学问题 即(s1+v1*t)%m == (s2+v2*t)%m···① 也即 (s1+v1*t-(s2+v2*t))%m==0 也即 (s1-s2)+(v1-v2)*t=k*m 也即 (v2-v1)*t+m*k=(s1-s2) 与 A*X+B*y=C对应; 这里如果C是gcd(A,B)的倍数,则有解; 为了方便起见 我们在A<0的时候,把A和C都取相反数(相…
[题目链接]:http://hihocoder.com/problemset/problem/1296 [题意] [题解] [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define rep1(i,a,b) for (int i = a…
[题目链接]:http://hihocoder.com/problemset/problem/1295 [题意] [题解] 可以在O(N)的复杂度内求出1..N里面的所有素数; 当然受空间限制,N可能也就是几百万的样子吧; 再低一点的话用朴素的筛法都能过了: 它的思路主要是; 抓住每个合数的最小的质因数是唯一的这一点; 然后避免每个合数被多次计算到; 因此每次枚举的都是质因数的倍数; 同时i%prim[j]==0直接break掉那点也很巧妙; 这里找到了break掉的原理↓↓ /* 算法最难理解…
[题目链接]:http://hihocoder.com/problemset/problem/1287 [题意] [题解] 取的底数必须是小于等于n-1的; 那12个数字能通过2^64以内的所有数字; [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long…
[题目链接]:http://hihocoder.com/problemset/problem/1333 [题意] [题解] 伸展树; 要求提供操作: 1.插入一个元素,两个权值,id作为查找的比较权值,val作为储存信息; 2.将id在[a..b]范围内的点的val值改变d;d能为负值 3.将id在[a..b]范围内的点全部删掉; 4.查询id在[a..b]范围内的点的val值的和; 区间的更改要用到懒惰标记; 权值和,则需要在node域里面加一个变量,存当前子树的val和; 在旋转,插入,删除…
[题目链接]:http://hihocoder.com/problemset/problem/1329 [题意] [题解] 插入操作:-,记住每次插入之后都要把它放到根节点去就好; 询问操作:对于询问x,然后找到权值为x+1的这个节点的左子树中的最大值;(如果没有这个x+1节点,则自己插入一个,之后删掉就好); 删除操作:插入两个节点l和r;然后找到小于l且最大的数字所在的节点lu,把它提到根节点所在的位置,然后再找到大于r且最小的数字所在的节点rv;把它提到根节点的右儿子所在的位置; 则根节点…
[题目链接]:http://hihocoder.com/problemset/problem/1329 [题意] [题解] 因为一开始是空的树,所以; n其实就代表了树中的最多元素个数; 则最坏的情况就是把所有元素都加进去; 然后再全部都删掉吧; 那也才2*n次操作; 完全可以用set来一个一个删除那个区间的数字; lower_bound是大于等于那个数字的啊.. [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using namespace…
[题目链接]:http://hihocoder.com/problemset/problem/1476 [题意] [题解] 首先不考虑黑格子,计算出一共有多少个矩形: 枚举矩形的大小r×c,这样大小的矩形一共有(N−r+1)(M−c+1)个. 然后减去不符合要求的矩形,也就是减去包含第一个黑格子的矩形个数,减去包含第二个黑格子,第三个的-- 然后再加上包含第一第二黑格子的矩形数-- 也就是容斥原理. (奇数个黑色格子就减,偶数个就加) 每一项的具体值如下计算:对于这些不能包含的格子,统计最左最右…