• 多项式用数组表示

索引为指数
数组中的内容为多项式的系数

  • 多项式乘法
    1. double a[N],b[N],c[2*N];
    2. for(int i=0;i<N;i++){
    3. for(int j=0;j<N;j++){
    4. c[i+j]+=a[i]*b[j];
    5. }
    6. }

在向量b中逆序存放向量a

vector b(a.rbegin(), a.rend());

高精度加法模板(vector)

  1. vector<int> add(vector<int> u,vector<int> v){
  2. vector<int> uu(u.rbegin(),u.rend());
  3. vector<int> vv(v.rbegin(),v.rend());
  4. vector<int> c;
  5. for(int i=0,t=0;i<uu.size()||i<vv.size()||t;i++){
  6. int s = t;
  7. if(i<uu.size()) s+=uu[i];
  8. if(i<vv.size()) s+=vv[i];
  9. c.push_back(s%10);
  10. t=s/10;
  11. }
  12. reverse(c.begin(),c.end());
  13. return c;
  14. }

进制转换(将r进制转换成十进制)(秦九韶算法)

  1. int get(char c)
  2. {
  3. if (c <= '9') return c - '0';
  4. return c - 'a' + 10;
  5. }
  6. LL calc(string n, LL r)
  7. {
  8. LL res = 0;
  9. for (auto c : n)
  10. {
  11. if ((double)res * r + get(c) > 1e16) return 1e18;
  12. res = res * r + get(c);
  13. }
  14. return res;
  15. }

一直输入n直到n为负数截止

  1. while(cin>>n,n>0){
  2. }

秦九韶算法 z = z*d+y d为需要向十进制转换的进制 y为此进制下的每一项

  • 对于读入的数据,如果需要根据数据类型进行不同的运算,比如读入的是数字就加1,如果是字母就返回ascii,那么我们可以先把数据存放到 stringstream 里,然后再保存到其他数据类型中。
    1. string s;
    2. cin>>s;
    3. stringstream ss(s);
    4. int a;
    5. string b;
    6. ss>>a;
    7. ss>>b;