每日学习内容

2020编程|刷题|语言|算法

1月份

1.22 学习内容: C++树与堆的库函数
  1. priority_queue 堆
    • 函数原型:priority_queue,Type 为数据类型,Container为保存数据的容器,Functional 为元素比较方式。  Container不能用 list。Container默认用的是vector, Functional默认用less(operator<), 既大顶堆。一般来说less是从小到大
    • 对于自定义类型,如结构体,则必须重载operator<或者重写仿函数(即greater)
  2. operator 重载运算符

    • 除了类属关系运算符 ‘ . ‘、成员指针运算符 ‘ .* ‘、作用域运算符 ‘ :: ‘、sizeof运算符和三目运算符”?:“以外,C++中的所有运算符都可以重载。
    • 写法:

      1. bool operator <(const node &a)const {
      2. //使用&运算符则为实参传递, 不用申请形参, 提高效率, 括号中的const保护参数a对象不会被修改,最后的const表明调用函数对象不会被修改
      3. //operator < 和 return len < a.len 表示 len小的优先级小
      4. return len < a.len;
      5. }
    • 注意事项 ‘<’ 和 ‘>’ 要根据容器的排列顺序决定使用,小到大,只能用operator <

  3. set 集合 / 二叉树

    • set 特点: 有序性, 无重复元素 (multiset可以插入重复元素)
    • 当set多个数据类型时 如set>, 默认按first排序
      1.21 学习内容: C++常用库函数
  4. map、set、vector、queue、stack

    • 动态生成的容器,可无限制存放
    • 可嵌套使用
    • 容器声明

      1. //声明一个存放int类型的vector
      2. vector<int> v;
      3. //嵌套使用
      4. map<string, vector<int>> mp1;
      5. map<string, map<string, int>> mp2;
    • 常用容器操作

      1. set<int> st; //set map需要使用迭代器iterator来进行操作 vector也可以使用迭代器操作
      2. vector<int> v;
      3. map<string, vector<int>> mp1;
      4. map<string, vector<int>>::iterator it = mp1.begin(); //迭代器 指向容器某处 可进行++--
      5. it->first//此时first 是string
      6. it->second//此时second 是 vector<int>
      7. //清空容器
      8. st.clear(); v.clear();
      9. //插入元素
      10. st.insert(); v.push_back(); q.push();
      11. //删除元素
      12. st.erase(number);//删除和number相同的元素
      13. set<int>::iterator pos = v.begin();
      14. st.erase(pos); //删除第num + 1 个元素 erase()返回被删除元素下个元素的迭代器
      15. //注意vector 的 erase() 函数类型是iterator map set 的erase() 函数类型是void
      16. //查找元素
      17. st.find(num); //找到返回true
      18. st.count(num);//返回num出现次数
  5. sort、unique、reverse、transform

    • sort可用于任何集合 sort 是优化过的快速排序,默认从小到大,从大到小需要自己编写bool cmp(type a, type b);
    • unique去重函数 set本身无重复 所以set.unique()是奇怪愚蠢的做法
    • reverse 字符串反转
    • transform(first,last,result,op);//first是容器的首迭代器,last为容器的末迭代器,result为存放结果的容器,op为要进行操作的一元函数对象或sturct、class 学过的op有std::tolower 没有括号
    • transform(first1,last1,first2,result,binary_op);//first1是第一个容器的首迭代 器,last1为第一个容器的末迭代器,first2为第二个容器的首迭代器,result为存放结果的容器,binary_op为要进行操作的二元函数 对象或sturct、class
      1.20 学习内容: 简单的数学问题编程
  6. 求解质数

    • 判断是否为质数 / 素数普通做法 时间复杂度: O(n^2)

      1. bool flag;
      2. int cnt = 0;
      3. for (int i = 2; i <= n; i++) {
      4. flag = true;
      5. for (int j = 2; j * j <= n; j++) {
      6. if ( n % j == 0) {
      7. flag = false;
      8. break;
      9. }
      10. }
      11. if (flag) cnt++;
      12. }
    • 求解某范围内所有质数 / 素数 以及 个数 时间复杂度: O(nloglogn)

      1. int n;
      2. cin >> n;
      3. bool prime[10000];
      4. for (int i = 2; i < n; i++) {
      5. prime[i] = true;
      6. }
      7. for (int i = 2; i * i < n; i++) {
      8. if (prime[i]) {
      9. for (int j = i * i; j < n; j += i) {
      10. prime[j] = false;
      11. }
      12. }
      13. }
      14. int cnt = 0;
      15. for (int i = 2; i < n; i++) {
      16. if (prime[i]) {
      17. cout << i << ' ';
      18. cnt++;
      19. }
      20. }
      21. cout << endl << cnt << endl;
  7. 最大公约数gcd 和 最小公倍数lcm

    • n = gcd * lcm;
    • gcd 通常比 lcm 小
    • n 的两个因数中较小的那一个不会超过sqrt(n)
  8. 分数处理

    • 两个分数比较 可化简为乘积形式

      1. PHNwYW4gY2xhc3M9ImthdGV4LWRpc3BsYXkiPjxzcGFuIGNsYXNzPSJrYXRleCI+PHNwYW4gY2xhc3M9ImthdGV4LW1hdGhtbCI+PG1hdGg+PHNlbWFudGljcz48bXJvdz48bWk+YTwvbWk+PG1pIG1hdGh2YXJpYW50PSJub3JtYWwiPi88L21pPjxtaT5iPC9taT48bW8+Jmd0OzwvbW8+PG1pPmM8L21pPjxtaSBtYXRodmFyaWFudD0ibm9ybWFsIj4vPC9taT48bWk+ZDwvbWk+PG1vPj08L21vPjxtbz4mZ3Q7PC9tbz48bWk+YTwvbWk+PG1vPuKIlzwvbW8+PG1pPmQ8L21pPjxtbz7iiJI8L21vPjxtaT5jPC9taT48bW8+4oiXPC9tbz48bWk+YjwvbWk+PG1vPiZndDs8L21vPjxtbj4wPC9tbj48L21yb3c+PGFubm90YXRpb24gZW5jb2Rpbmc9ImFwcGxpY2F0aW9uL3gtdGV4Ij5hIC8gYiAmZ3Q7IGMgL2QgIAo9Jmd0OyBhICogZCAtIGMgKiBiICZndDsgMAo8L2Fubm90YXRpb24+PC9zZW1hbnRpY3M+PC9tYXRoPjwvc3Bhbj48c3BhbiBjbGFzcz0ia2F0ZXgtaHRtbCIgYXJpYS1oaWRkZW49InRydWUiPjxzcGFuIGNsYXNzPSJzdHJ1dCIgc3R5bGU9ImhlaWdodDowLjc1ZW07Ij48L3NwYW4+PHNwYW4gY2xhc3M9InN0cnV0IGJvdHRvbSIgc3R5bGU9ImhlaWdodDoxZW07dmVydGljYWwtYWxpZ246LTAuMjVlbTsiPjwvc3Bhbj48c3BhbiBjbGFzcz0iYmFzZSI+PHNwYW4gY2xhc3M9Im1vcmQgbWF0aGl0Ij5hPC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIG1hdGhpdCI+Yjwvc3Bhbj48c3BhbiBjbGFzcz0ibW9yZCBydWxlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjAuMjc3Nzc3Nzc3Nzc3Nzc3OGVtOyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJtcmVsIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIHJ1bGUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6MC4yNzc3Nzc3Nzc3Nzc3Nzc4ZW07Ij48L3NwYW4+PHNwYW4gY2xhc3M9Im1vcmQgbWF0aGl0Ij5jPC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIG1hdGhpdCI+ZDwvc3Bhbj48c3BhbiBjbGFzcz0ibW9yZCBydWxlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjAuMjc3Nzc3Nzc3Nzc3Nzc3OGVtOyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJtcmVsIj49PC9zcGFuPjxzcGFuIGNsYXNzPSJtcmVsIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIHJ1bGUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6MC4yNzc3Nzc3Nzc3Nzc3Nzc4ZW07Ij48L3NwYW4+PHNwYW4gY2xhc3M9Im1vcmQgbWF0aGl0Ij5hPC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIHJ1bGUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6MC4yMjIyMjIyMjIyMjIyMjIyZW07Ij48L3NwYW4+PHNwYW4gY2xhc3M9Im1iaW4iPuKIlzwvc3Bhbj48c3BhbiBjbGFzcz0ibW9yZCBydWxlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjAuMjIyMjIyMjIyMjIyMjIyMmVtOyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIG1hdGhpdCI+ZDwvc3Bhbj48c3BhbiBjbGFzcz0ibW9yZCBydWxlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjAuMjIyMjIyMjIyMjIyMjIyMmVtOyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJtYmluIj7iiJI8L3NwYW4+PHNwYW4gY2xhc3M9Im1vcmQgcnVsZSIgc3R5bGU9Im1hcmdpbi1yaWdodDowLjIyMjIyMjIyMjIyMjIyMjJlbTsiPjwvc3Bhbj48c3BhbiBjbGFzcz0ibW9yZCBtYXRoaXQiPmM8L3NwYW4+PHNwYW4gY2xhc3M9Im1vcmQgcnVsZSIgc3R5bGU9Im1hcmdpbi1yaWdodDowLjIyMjIyMjIyMjIyMjIyMjJlbTsiPjwvc3Bhbj48c3BhbiBjbGFzcz0ibWJpbiI+4oiXPC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIHJ1bGUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6MC4yMjIyMjIyMjIyMjIyMjIyZW07Ij48L3NwYW4+PHNwYW4gY2xhc3M9Im1vcmQgbWF0aGl0Ij5iPC9zcGFuPjxzcGFuIGNsYXNzPSJtb3JkIHJ1bGUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6MC4yNzc3Nzc3Nzc3Nzc3Nzc4ZW07Ij48L3NwYW4+PHNwYW4gY2xhc3M9Im1yZWwiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9Im1vcmQgcnVsZSIgc3R5bGU9Im1hcmdpbi1yaWdodDowLjI3Nzc3Nzc3Nzc3Nzc3NzhlbTsiPjwvc3Bhbj48c3BhbiBjbGFzcz0ibW9yZCI+MDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+
    • 求出与问题有关分数之后,记得约分

      1. int g = gcd(a, b);
      2. a /= g;
      3. b /= g;
  9. 两个指数幂能否成 倍数关系 a ^ b % c ^ d == 0 ?

    • 条件: a 包含 c 的所有质因子
      1. int prime[1000], pow[1000], pcnt = 0;
      2. //对m1分解质因子
      3. for (int i = 2; i * i <= m1; i++) {
      4. if (m1 % i == 0) {
      5. prime[pcnt] = i;
      6. while (m1 % i == 0) {
      7. pow[pcnt]++;
      8. m1 /= i;
      9. }
      10. pcnt++;
      11. }
      12. }
      13. if (m1 != 1) {
      14. pow[pcnt] = 1;
      15. prime[pcnt] = m1;
      16. pcnt++;
      17. }
      18. bool f = true;
      19. for (int j = a; j < pcnt; j++) {
      20. if (si % prime[j] != 0) {
      21. f = false;
      22. break;
      23. }
      24. }
  10. 进制转换

    1. //用string保存 方便连接新数据 和 转换10进制以上
    2. string trans(int i, int b) {
    3. string ret;
    4. while (i) {
    5. if (i % b < 10) {
    6. ret += i % b + '0';
    7. } else {
    8. ret += i % b - 10 + 'A';
    9. }
    10. i /= b;
    11. }
    12. //得到的数据与原始数据相反 需反转一下
    13. reverse(ret.begin(), ret.end());
    14. return ret;
    15. }
  11. 回文判断

    1. bool palin(string s) {
    2. string s2 = s;
    3. reverse(s2.begin(), s2.end());
    4. //如果反转后的数据和反转前相同 那么就是回文
    5. if (s2 == s) {
    6. return true;
    7. }
    8. return false;
    9. }

    %23%202020%E7%BC%96%E7%A8%8B%7C%E5%88%B7%E9%A2%98%7C%E8%AF%AD%E8%A8%80%7C%E7%AE%97%E6%B3%95%0A%23%23%23%23%201%E6%9C%88%E4%BB%BD%0A%0A%23%23%23%23%23%201.22%20%E5%AD%A6%E4%B9%A0%E5%86%85%E5%AE%B9%3A%20C%2B%2B%E6%A0%91%E4%B8%8E%E5%A0%86%E7%9A%84%E5%BA%93%E5%87%BD%E6%95%B0%0A1.%20priority_queue%3CType%2C%20Container%2C%20Functional%3E%20%E5%A0%86%20%0A%20%20%20%20-%20%E5%87%BD%E6%95%B0%E5%8E%9F%E5%9E%8B%EF%BC%9Apriority_queue%3CType%2C%20Container%2C%20Functional%3E%EF%BC%8CType%20%E4%B8%BA%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%EF%BC%8CContainer%E4%B8%BA%E4%BF%9D%E5%AD%98%E6%95%B0%E6%8D%AE%E7%9A%84%E5%AE%B9%E5%99%A8%EF%BC%8CFunctional%20%E4%B8%BA%E5%85%83%E7%B4%A0%E6%AF%94%E8%BE%83%E6%96%B9%E5%BC%8F%E3%80%82%E3%80%80%E3%80%80Container%E4%B8%8D%E8%83%BD%E7%94%A8%20list%E3%80%82Container%E9%BB%98%E8%AE%A4%E7%94%A8%E7%9A%84%E6%98%AFvector%2C%20Functional%E9%BB%98%E8%AE%A4%E7%94%A8less%3CType%3E(operator%3C)%2C%20%E6%97%A2%E5%A4%A7%E9%A1%B6%E5%A0%86%E3%80%82%E4%B8%80%E8%88%AC%E6%9D%A5%E8%AF%B4less%E6%98%AF%E4%BB%8E%E5%B0%8F%E5%88%B0%E5%A4%A7%0A%20%20%20%20-%20%E5%AF%B9%E4%BA%8E%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B1%BB%E5%9E%8B%2C%E5%A6%82%E7%BB%93%E6%9E%84%E4%BD%93%EF%BC%8C%E5%88%99%E5%BF%85%E9%A1%BB%E9%87%8D%E8%BD%BDoperator%3C%E6%88%96%E8%80%85%E9%87%8D%E5%86%99%E4%BB%BF%E5%87%BD%E6%95%B0(%E5%8D%B3greater%3CType%3E)%0A2.%20operator%20%E9%87%8D%E8%BD%BD%E8%BF%90%E7%AE%97%E7%AC%A6%0A%20%20%20%20-%20%E9%99%A4%E4%BA%86%E7%B1%BB%E5%B1%9E%E5%85%B3%E7%B3%BB%E8%BF%90%E7%AE%97%E7%AC%A6%20’%20.%20’%E3%80%81%E6%88%90%E5%91%98%E6%8C%87%E9%92%88%E8%BF%90%E7%AE%97%E7%AC%A6%20’%20.%20’%E3%80%81%E4%BD%9C%E7%94%A8%E5%9F%9F%E8%BF%90%E7%AE%97%E7%AC%A6%20’%20%3A%3A%20’%E3%80%81sizeof%E8%BF%90%E7%AE%97%E7%AC%A6%E5%92%8C%E4%B8%89%E7%9B%AE%E8%BF%90%E7%AE%97%E7%AC%A6%E2%80%9D%3F%3A%E2%80%9C%E4%BB%A5%E5%A4%96%EF%BC%8CC%2B%2B%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E8%BF%90%E7%AE%97%E7%AC%A6%E9%83%BD%E5%8F%AF%E4%BB%A5%E9%87%8D%E8%BD%BD%E3%80%82%20%0A%20%20%20%20-%20%E5%86%99%E6%B3%95%3A%0A%20%20%20%20%20%20%20%20%60%60%60c%0A%20%20%20%20%20%20%20%20bool%C2%A0operator%C2%A0%3C(const%C2%A0node%C2%A0%26a)const%C2%A0%7B%20%0A%20%20%20%20%20%20%20%20%2F%2F%E4%BD%BF%E7%94%A8%26%E8%BF%90%E7%AE%97%E7%AC%A6%E5%88%99%E4%B8%BA%E5%AE%9E%E5%8F%82%E4%BC%A0%E9%80%92%2C%20%E4%B8%8D%E7%94%A8%E7%94%B3%E8%AF%B7%E5%BD%A2%E5%8F%82%2C%20%E6%8F%90%E9%AB%98%E6%95%88%E7%8E%87%2C%20%E6%8B%AC%E5%8F%B7%E4%B8%AD%E7%9A%84const%E4%BF%9D%E6%8A%A4%E5%8F%82%E6%95%B0a%E5%AF%B9%E8%B1%A1%E4%B8%8D%E4%BC%9A%E8%A2%AB%E4%BF%AE%E6%94%B9%EF%BC%8C%E6%9C%80%E5%90%8E%E7%9A%84const%E8%A1%A8%E6%98%8E%E8%B0%83%E7%94%A8%E5%87%BD%E6%95%B0%E5%AF%B9%E8%B1%A1%E4%B8%8D%E4%BC%9A%E8%A2%AB%E4%BF%AE%E6%94%B9%0A%20%20%20%20%20%20%20%20%2F%2Foperator%C2%A0%3C%20%E5%92%8C%20return%C2%A0len%20%3C%20a.len%20%E8%A1%A8%E7%A4%BA%20len%E5%B0%8F%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%E5%B0%8F%0A%20%20%20%20%20%20%20%20return%C2%A0len%20%3C%20a.len%3B%C2%A0%C2%A0%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%60%60%60%0A%20%20%20%20-%20%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9%20’%3C’%20%E5%92%8C%20’%3E’%20%E8%A6%81%E6%A0%B9%E6%8D%AE%E5%AE%B9%E5%99%A8%E7%9A%84%E6%8E%92%E5%88%97%E9%A1%BA%E5%BA%8F%E5%86%B3%E5%AE%9A%E4%BD%BF%E7%94%A8%2C%E5%B0%8F%E5%88%B0%E5%A4%A7%2C%E5%8F%AA%E8%83%BD%E7%94%A8operator%20%3C%0A3.%20set%3CType%2C%20Functional%2C%20Allocation%3E%20%E9%9B%86%E5%90%88%20%2F%20%E4%BA%8C%E5%8F%89%E6%A0%91%20%20%20%20%0A%20%20%20%20-%20set%20%E7%89%B9%E7%82%B9%3A%20%E6%9C%89%E5%BA%8F%E6%80%A7%2C%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20(multiset%E5%8F%AF%E4%BB%A5%E6%8F%92%E5%85%A5%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0)%0A%20%20%20%20-%20%E5%BD%93set%E5%A4%9A%E4%B8%AA%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E6%97%B6%20%E5%A6%82set%3Cpair%3Cint%2C%20int%3E%3E%2C%20%E9%BB%98%E8%AE%A4%E6%8C%89first%E6%8E%92%E5%BA%8F%0A%0A%23%23%23%23%23%201.21%20%E5%AD%A6%E4%B9%A0%E5%86%85%E5%AE%B9%3A%20C%2B%2B%E5%B8%B8%E7%94%A8%E5%BA%93%E5%87%BD%E6%95%B0%0A1.%20map%E3%80%81set%E3%80%81vector%E3%80%81queue%E3%80%81stack%0A%20%20%20%20-%20%E5%8A%A8%E6%80%81%E7%94%9F%E6%88%90%E7%9A%84%E5%AE%B9%E5%99%A8%2C%E5%8F%AF%E6%97%A0%E9%99%90%E5%88%B6%E5%AD%98%E6%94%BE%0A%20%20%20%20-%20%E5%8F%AF%E5%B5%8C%E5%A5%97%E4%BD%BF%E7%94%A8%0A%20%20%20%20-%20%E5%AE%B9%E5%99%A8%E5%A3%B0%E6%98%8E%0A%20%20%20%20%20%20%20%20%60%60%60c%0A%20%20%20%20%20%20%20%20%2F%2F%E5%A3%B0%E6%98%8E%E4%B8%80%E4%B8%AA%E5%AD%98%E6%94%BEint%E7%B1%BB%E5%9E%8B%E7%9A%84vector%0A%20%20%20%20%20%20%20%20vector%3Cint%3E%20v%3B%0A%20%20%20%20%20%20%20%20%2F%2F%E5%B5%8C%E5%A5%97%E4%BD%BF%E7%94%A8%0A%20%20%20%20%20%20%20%20map%3Cstring%2C%20vector%3Cint%3E%3E%20mp1%3B%0A%20%20%20%20%20%20%20%20map%3Cstring%2C%20map%3Cstring%2C%20int%3E%3E%20mp2%3B%0A%20%20%20%20%20%20%20%20%60%60%60%0A%20%20%20%20-%20%E5%B8%B8%E7%94%A8%E5%AE%B9%E5%99%A8%E6%93%8D%E4%BD%9C%0A%20%20%20%20%20%20%20%20%60%60%60c%0A%20%20%20%20%20%20%20%20set%3Cint%3E%20st%3B%20%2F%2Fset%20map%E9%9C%80%E8%A6%81%E4%BD%BF%E7%94%A8%E8%BF%AD%E4%BB%A3%E5%99%A8iterator%E6%9D%A5%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C%20vector%E4%B9%9F%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%93%8D%E4%BD%9C%0A%20%20%20%20%20%20%20%20vector%3Cint%3E%20v%3B%0A%20%20%20%20%20%20%20%20map%3Cstring%2C%20vector%3Cint%3E%3E%20mp1%3B%0A%20%20%20%20%20%20%20%20map%3Cstring%2C%20vector%3Cint%3E%3E%3A%3Aiterator%20it%20%3D%20mp1.begin()%3B%20%2F%2F%E8%BF%AD%E4%BB%A3%E5%99%A8%20%E6%8C%87%E5%90%91%E5%AE%B9%E5%99%A8%E6%9F%90%E5%A4%84%20%E5%8F%AF%E8%BF%9B%E8%A1%8C%2B%2B—%0A%20%20%20%20%20%20%20%20it-%3Efirst%2F%2F%E6%AD%A4%E6%97%B6first%20%E6%98%AFstring%0A%20%20%20%20%20%20%20%20it-%3Esecond%2F%2F%E6%AD%A4%E6%97%B6second%20%E6%98%AF%20vector%3Cint%3E%0A%20%20%20%20%20%20%20%20%2F%2F%E6%B8%85%E7%A9%BA%E5%AE%B9%E5%99%A8%0A%20%20%20%20%20%20%20%20st.clear()%3B%20v.clear()%3B%0A%20%20%20%20%20%20%20%20%2F%2F%E6%8F%92%E5%85%A5%E5%85%83%E7%B4%A0%0A%20%20%20%20%20%20%20%20st.insert()%3B%20v.push_back()%3B%20q.push()%3B%0A%20%20%20%20%20%20%20%20%2F%2F%E5%88%A0%E9%99%A4%E5%85%83%E7%B4%A0%0A%20%20%20%20%20%20%20%20st.erase(number)%3B%2F%2F%E5%88%A0%E9%99%A4%E5%92%8Cnumber%E7%9B%B8%E5%90%8C%E7%9A%84%E5%85%83%E7%B4%A0%0A%20%20%20%20%20%20%20%20set%3Cint%3E%3A%3Aiterator%20pos%20%3D%20v.begin()%3B%0A%20%20%20%20%20%20%20%20st.erase(pos)%3B%20%20%2F%2F%E5%88%A0%E9%99%A4%E7%AC%ACnum%20%2B%201%20%E4%B8%AA%E5%85%83%E7%B4%A0%20%20erase()%E8%BF%94%E5%9B%9E%E8%A2%AB%E5%88%A0%E9%99%A4%E5%85%83%E7%B4%A0%E4%B8%8B%E4%B8%AA%E5%85%83%E7%B4%A0%E7%9A%84%E8%BF%AD%E4%BB%A3%E5%99%A8%0A%20%20%20%20%20%20%20%20%2F%2F%E6%B3%A8%E6%84%8Fvector%20%E7%9A%84%20erase()%20%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B%E6%98%AFiterator%20map%20set%20%E7%9A%84erase()%20%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B%E6%98%AFvoid%0A%20%20%20%20%20%20%20%20%2F%2F%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0%0A%20%20%20%20%20%20%20%20st.find(num)%3B%20%2F%2F%E6%89%BE%E5%88%B0%E8%BF%94%E5%9B%9Etrue%0A%20%20%20%20%20%20%20%20st.count(num)%3B%2F%2F%E8%BF%94%E5%9B%9Enum%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%0A%20%20%20%20%20%20%20%20%60%60%60%0A2.%20sort%E3%80%81unique%E3%80%81reverse%E3%80%81transform%0A%20%20%20%20-%20sort%E5%8F%AF%E7%94%A8%E4%BA%8E%E4%BB%BB%E4%BD%95%E9%9B%86%E5%90%88%20sort%20%E6%98%AF%E4%BC%98%E5%8C%96%E8%BF%87%E7%9A%84%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%2C%E9%BB%98%E8%AE%A4%E4%BB%8E%E5%B0%8F%E5%88%B0%E5%A4%A7%2C%E4%BB%8E%E5%A4%A7%E5%88%B0%E5%B0%8F%E9%9C%80%E8%A6%81%E8%87%AA%E5%B7%B1%E7%BC%96%E5%86%99bool%20cmp(type%20a%2C%20type%20b)%3B%0A%20%20%20%20-%20unique%E5%8E%BB%E9%87%8D%E5%87%BD%E6%95%B0%20set%E6%9C%AC%E8%BA%AB%E6%97%A0%E9%87%8D%E5%A4%8D%20%E6%89%80%E4%BB%A5set.unique()%E6%98%AF%E5%A5%87%E6%80%AA%E6%84%9A%E8%A0%A2%E7%9A%84%E5%81%9A%E6%B3%95%0A%20%20%20%20-%20reverse%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8F%8D%E8%BD%AC%20%20%20%20%20%20%20%20%0A%20%20%20%20-%20transform(first%2Clast%2Cresult%2Cop)%3B%2F%2Ffirst%E6%98%AF%E5%AE%B9%E5%99%A8%E7%9A%84%E9%A6%96%E8%BF%AD%E4%BB%A3%E5%99%A8%EF%BC%8Clast%E4%B8%BA%E5%AE%B9%E5%99%A8%E7%9A%84%E6%9C%AB%E8%BF%AD%E4%BB%A3%E5%99%A8%EF%BC%8Cresult%E4%B8%BA%E5%AD%98%E6%94%BE%E7%BB%93%E6%9E%9C%E7%9A%84%E5%AE%B9%E5%99%A8%EF%BC%8Cop%E4%B8%BA%E8%A6%81%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C%E7%9A%84%E4%B8%80%E5%85%83%E5%87%BD%E6%95%B0%E5%AF%B9%E8%B1%A1%E6%88%96sturct%E3%80%81class%20%20%E5%AD%A6%E8%BF%87%E7%9A%84op%E6%9C%89std%3A%3Atolower%20%E6%B2%A1%E6%9C%89%E6%8B%AC%E5%8F%B7%0A%20%20%20%20-%20transform(first1%2Clast1%2Cfirst2%2Cresult%2Cbinary_op)%3B%2F%2Ffirst1%E6%98%AF%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AE%B9%E5%99%A8%E7%9A%84%E9%A6%96%E8%BF%AD%E4%BB%A3%20%E5%99%A8%EF%BC%8Clast1%E4%B8%BA%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AE%B9%E5%99%A8%E7%9A%84%E6%9C%AB%E8%BF%AD%E4%BB%A3%E5%99%A8%EF%BC%8Cfirst2%E4%B8%BA%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%AE%B9%E5%99%A8%E7%9A%84%E9%A6%96%E8%BF%AD%E4%BB%A3%E5%99%A8%EF%BC%8Cresult%E4%B8%BA%E5%AD%98%E6%94%BE%E7%BB%93%E6%9E%9C%E7%9A%84%E5%AE%B9%E5%99%A8%EF%BC%8Cbinary_op%E4%B8%BA%E8%A6%81%E8%BF%9B%E8%A1%8C%E6%93%8D%E4%BD%9C%E7%9A%84%E4%BA%8C%E5%85%83%E5%87%BD%E6%95%B0%20%E5%AF%B9%E8%B1%A1%E6%88%96sturct%E3%80%81class%0A%0A%23%23%23%23%23%201.20%20%E5%AD%A6%E4%B9%A0%E5%86%85%E5%AE%B9%3A%20%E7%AE%80%E5%8D%95%E7%9A%84%E6%95%B0%E5%AD%A6%E9%97%AE%E9%A2%98%E7%BC%96%E7%A8%8B%0A%0A1.%20%E6%B1%82%E8%A7%A3%E8%B4%A8%E6%95%B0%20%0A%20%20%20%20-%20%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BA%E8%B4%A8%E6%95%B0%20%2F%20%E7%B4%A0%E6%95%B0%E6%99%AE%E9%80%9A%E5%81%9A%E6%B3%95%20%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%3A%20O(n%5E2)%0A%20%20%20%20%20%20%20%20%60%60%60c%0A%20%20%20%20%20%20%20%20bool%20flag%3B%0A%20%20%20%20%20%20%20%20int%20cnt%20%3D%200%3B%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%202%3B%20i%20%3C%3D%20n%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20flag%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(int%20j%20%3D%202%3B%20j%20%20j%20%3C%3D%20n%3B%20j%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%20n%20%25%20j%20%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20flag%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(flag)%20cnt%2B%2B%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%60%60%60%0A%20%20%20%20%0A%20%20%20%20-%20%E6%B1%82%E8%A7%A3%E6%9F%90%E8%8C%83%E5%9B%B4%E5%86%85%E6%89%80%E6%9C%89%E8%B4%A8%E6%95%B0%20%2F%20%E7%B4%A0%E6%95%B0%20%E4%BB%A5%E5%8F%8A%20%E4%B8%AA%E6%95%B0%20%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%3A%20O(nloglogn)%0A%20%20%20%20%20%20%20%20%60%60%60c%0A%20%20%20%20%20%20%20%20int%20n%3B%0A%20%20%20%20%20%20%20%20cin%20%3E%3E%20n%3B%0A%20%20%20%20%20%20%20%20bool%20prime%5B10000%5D%3B%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%202%3B%20i%20%3C%20n%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20prime%5Bi%5D%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%202%3B%20i%20%20i%20%3C%20n%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(prime%5Bi%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(int%20j%20%3D%20i%20%20i%3B%20j%20%3C%20n%3B%20j%20%2B%3D%20i)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prime%5Bj%5D%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20int%20cnt%20%3D%200%3B%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%202%3B%20i%20%3C%20n%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(prime%5Bi%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cout%20%3C%3C%20i%20%3C%3C%20’%20’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cnt%2B%2B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20cout%20%3C%3C%20endl%20%3C%3C%20cnt%20%3C%3C%20endl%3B%0A%20%20%20%20%20%20%20%20%60%60%60%0A2.%20%E6%9C%80%E5%A4%A7%E5%85%AC%E7%BA%A6%E6%95%B0gcd%20%E5%92%8C%20%E6%9C%80%E5%B0%8F%E5%85%AC%E5%80%8D%E6%95%B0lcm%0A%20%20%20%20-%20n%20%3D%20gcd%20%20lcm%3B%0A%20%20%20%20-%20gcd%20%E9%80%9A%E5%B8%B8%E6%AF%94%20lcm%20%E5%B0%8F%0A%20%20%20%20-%20n%20%E7%9A%84%E4%B8%A4%E4%B8%AA%E5%9B%A0%E6%95%B0%E4%B8%AD%E8%BE%83%E5%B0%8F%E7%9A%84%E9%82%A3%E4%B8%80%E4%B8%AA%E4%B8%8D%E4%BC%9A%E8%B6%85%E8%BF%87sqrt(n)%0A%0A3.%20%E5%88%86%E6%95%B0%E5%A4%84%E7%90%86%0A%20%20%20%20-%20%E4%B8%A4%E4%B8%AA%E5%88%86%E6%95%B0%E6%AF%94%E8%BE%83%20%E5%8F%AF%E5%8C%96%E7%AE%80%E4%B8%BA%E4%B9%98%E7%A7%AF%E5%BD%A2%E5%BC%8F%0A%20%20%20%20%60%60%60math%0A%20%20%20%20a%20%2F%20b%20%3E%20c%20%2Fd%20%20%0A%20%20%20%20%3D%3E%20a%20%20d%20-%20c%20%20b%20%3E%200%0A%20%20%20%20%60%60%60%0A%20%20%20%20-%20%E6%B1%82%E5%87%BA%E4%B8%8E%E9%97%AE%E9%A2%98%E6%9C%89%E5%85%B3%E5%88%86%E6%95%B0%E4%B9%8B%E5%90%8E%2C%E8%AE%B0%E5%BE%97%E7%BA%A6%E5%88%86%0A%20%20%20%20%20%20%20%20%60%60%60c%0A%20%20%20%20%20%20%20%20int%20g%20%3D%20gcd(a%2C%20b)%3B%0A%20%20%20%20%20%20%20%20a%20%2F%3D%20g%3B%0A%20%20%20%20%20%20%20%20b%20%2F%3D%20g%3B%0A%20%20%20%20%20%20%20%20%60%60%60%0A4.%20%E4%B8%A4%E4%B8%AA%E6%8C%87%E6%95%B0%E5%B9%82%E8%83%BD%E5%90%A6%E6%88%90%20%E5%80%8D%E6%95%B0%E5%85%B3%E7%B3%BB%20%20a%20%5E%20b%20%25%20c%20%5E%20d%20%3D%3D%200%20%3F%0A%20%20%20%20%20%E6%9D%A1%E4%BB%B6%3A%20a%20%E5%8C%85%E5%90%AB%20c%20%E7%9A%84%E6%89%80%E6%9C%89%E8%B4%A8%E5%9B%A0%E5%AD%90%0A%20%20%20%20%20%20%20%20%60%60%60c%0A%20%20%20%20%20%20%20%20int%20prime%5B1000%5D%2C%20pow%5B1000%5D%2C%20pcnt%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%2F%2F%E5%AF%B9m1%E5%88%86%E8%A7%A3%E8%B4%A8%E5%9B%A0%E5%AD%90%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%202%3B%20i%20*%20i%20%3C%3D%20m1%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(m1%20%25%20i%20%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prime%5Bpcnt%5D%20%3D%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20while%20(m1%20%25%20i%20%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pow%5Bpcnt%5D%2B%2B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20m1%20%2F%3D%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pcnt%2B%2B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(m1%20!%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pow%5Bpcnt%5D%20%3D%201%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prime%5Bpcnt%5D%20%3D%20m1%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pcnt%2B%2B%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20bool%20f%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20for%20(int%20j%20%3D%20a%3B%20j%20%3C%20pcnt%3B%20j%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(si%20%25%20prime%5Bj%5D%20!%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%60%60%60%0A5.%20%E8%BF%9B%E5%88%B6%E8%BD%AC%E6%8D%A2%0A%20%20%20%20%60%60%60c%0A%20%20%20%20%2F%2F%E7%94%A8string%E4%BF%9D%E5%AD%98%20%E6%96%B9%E4%BE%BF%E8%BF%9E%E6%8E%A5%E6%96%B0%E6%95%B0%E6%8D%AE%20%E5%92%8C%20%E8%BD%AC%E6%8D%A210%E8%BF%9B%E5%88%B6%E4%BB%A5%E4%B8%8A%0A%20%20%20%20string%20trans(int%20i%2C%20int%20b)%20%7B%0A%20%20%20%20%20%20%20%20string%20ret%3B%0A%20%20%20%20%20%20%20%20while%20(i)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(i%20%25%20b%20%3C%2010)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ret%20%2B%3D%20i%20%25%20b%20%2B%20’0’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ret%20%2B%3D%20i%20%25%20b%20-%2010%20%2B%20’A’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20i%20%2F%3D%20b%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%E5%BE%97%E5%88%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E4%B8%8E%E5%8E%9F%E5%A7%8B%E6%95%B0%E6%8D%AE%E7%9B%B8%E5%8F%8D%20%E9%9C%80%E5%8F%8D%E8%BD%AC%E4%B8%80%E4%B8%8B%0A%20%20%20%20%20%20%20%20reverse(ret.begin()%2C%20ret.end())%3B%0A%20%20%20%20%20%20%20%20return%20ret%3B%0A%20%20%20%20%7D%0A%20%20%20%20%60%60%60%0A6.%20%E5%9B%9E%E6%96%87%E5%88%A4%E6%96%AD%0A%20%20%20%20%60%60%60c%0A%20%20%20%20bool%20palin(string%20s)%20%7B%0A%20%20%20%20%20%20%20%20string%20s2%20%3D%20s%3B%0A%20%20%20%20%20%20%20%20reverse(s2.begin()%2C%20s2.end())%3B%0A%20%20%20%20%20%20%20%20%2F%2F%E5%A6%82%E6%9E%9C%E5%8F%8D%E8%BD%AC%E5%90%8E%E7%9A%84%E6%95%B0%E6%8D%AE%E5%92%8C%E5%8F%8D%E8%BD%AC%E5%89%8D%E7%9B%B8%E5%90%8C%20%E9%82%A3%E4%B9%88%E5%B0%B1%E6%98%AF%E5%9B%9E%E6%96%87%0A%20%20%20%20%20%20%20%20if%20(s2%20%3D%3D%20s)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20%60%60%60