全部评论 9

  • struct Complex{
        High_Precision Re,Im;
        Complex(){
            Re=Im=hp(0);
        }
        Complex(hp _Re,hp _Im){
            Re=_Re;
            Im=_Im;
        }
        Complex(int _Re,int _Im){
            Re=hp(_Re);
            Im=hp(_Im);
        }
        Complex(hp _Re){
            Re=_Re;
            Im=hp(0);
        }
        Complex(int _Re){
            Re=hp(_Re);
            Im=hp(0);
        }
        void output(bool endline=1){
            if(!Im){
                Re.output(endline);
            }else{
                if(!Re){
                    Im.output(0);
                    putchar('i');
                    if(endline)putchar('\n');
                }else{
                    Re.output(0);
                    if(Im.s[0]!='-')putchar('+');
                    Im.output(0);
                    putchar('i');
                    if(endline)putchar('\n');
                }
            }
        }
        friend Complex operator+(const Complex&a,const Complex&b){
            Complex ans;
            ans.Re=a.Re+b.Re;
            ans.Im=a.Im+b.Im;
            return ans;
        }
        friend Complex operator-(const Complex&a,const Complex&b){
            Complex ans;
            ans.Re=a.Re-b.Re;
            ans.Im=a.Im-b.Im;
            return ans;
        }
        friend Complex operator*(const Complex&a,const Complex&b){
            Complex ans;
            ans.Re=a.Re*b.Re-a.Im*b.Im;
            ans.Im=a.Re*b.Im+a.Im*b.Re;
            return ans;
        }
        void operator+=(const Complex&a){
            *this=*this+a;
        }
        void operator-=(const Complex&a){
            *this=*this-a;
        }
        void operator*=(const Complex&a){
            *this=*this*a;
        }
        ~Complex(){
            Re=Im=hp("");
        }
    };

    16小时前 来自 上海

    0
  • struct High_Precision{
        string s;
        High_Precision(){
            s="";
        }
        High_Precision(string str){
            s=str;
        }
        High_Precision(int x){
            stringstream ss;
            ss<<x;
            ss>>s;
        }
        friend bool operator<(const hp&a,const hp&b){
            return(a.s.size()<b.s.size()||(a.s.size()==b.s.size()&&a.s<b.s));
        }
        friend bool operator==(const hp&a,const hp&b){
            return(a.s==b.s);
        }
        friend bool operator>(const hp&a,const hp&b){
            return!(a<b)&&!(a==b);
        }
        friend bool operator>=(const hp&a,const hp&b){
        	return a>b||a==b;
    	}
    	friend bool operator<=(const hp&a,const hp&b){
    		return a<b||a==b;
    	}
    	friend bool operator!=(const hp&a,const hp&b){
    		return !(a==b);
    	}
        void input(){
            bool op=0;
            char c=getchar();
            while(c>57||c<48){
                if(c=='-')op=1;
                c=getchar();
            }
            while(c<58&&c>47){
                s+=c;
                c=getchar();
            }
            if(op)s='-'+s;
        }
        void output(bool endline=1){
            for(auto i:s)putchar(i);
            if(endline)putchar('\n');
        }
        High_Precision operator-(){
            if(s[0]!='-')return hp('-'+s);
            else return hp(s.substr(1,s.size()-1));
        }//未完待续

    16小时前 来自 上海

    0
    • friend High_Precision operator*(const hp&a,const hp&b){
              hp _a=a,_b=b;
              if(a.s[0]=='-')_a=-_a;
              if(b.s[0]=='-')_b=-_b;
              string s1=_a.s,s2=_b.s;
              hp ans(0);
              reverse(s2.begin(),s2.end());
              for(int i=0;i<s2.size();i++){
                  if(s2[i]==48)continue;
                  hp t1(s1),t2(s1);
                  for(int j=50;j<=s2[i];j++)t1=t1+t2;
                  for(int j=0;j<i;j++)t1.s+=48;
                  ans=ans+t1;
              }
              while(ans.s.size()>1&&ans.s.front()==48)ans.s=ans.s.substr(1,ans.s.size()-1);
              if(ans.s!="0"&&((a.s[0]=='-')^(b.s[0]=='-')))ans.s='-'+ans.s;
              return ans;
          }
          friend High_Precision operator/(const hp&a,const hp&b){
              string s1=a.s,s2=b.s;
              hp ans(0),ten(10),tmp(""),t(1);
              for(int i=0;i<s1.size();i++){
                  tmp.s=tmp.s+s1[i];
                  while(tmp.s.size()>1&&tmp.s.front()==48)tmp.s=tmp.s.substr(1,tmp.s.size()-1);
                  if(tmp<b)ans=ans*ten;
                  hp res(0);
                  while(tmp>=b&&res<hp(9)){
                      tmp=tmp-b;
                      res=hp(1)+res;
                  }
                  if(res!=hp(0))ans.s=ans.s+res.s;
              }
              while(ans.s.size()>1&&ans.s.front()==48)ans.s=ans.s.substr(1,ans.s.size()-1);
              return ans;
          }
          friend High_Precision operator%(const hp&a,const hp&b){
              return a-((a/b)*b);
          }
          void operator+=(const hp&a){
              *this=*this+a;
          }
          void operator-=(const hp&a){
              *this=*this-a;
          }
          void operator*=(const hp&a){
              *this=*this*a;
          }
          void operator/=(const hp&a){
              *this=*this/a;
          }
          void operator%=(const hp&a){
              *this=*this%a;
          }
          void operator++(){
              *this=*this+hp(1);
          }
          void operator--(){
              *this=*this-hp(1);
          }
          bool operator!(){
              return *this==hp(0);
          }
          ~High_Precision(){}
      };

      16小时前 来自 上海

      0
  • inline void read(int&x){
        x=0;
        char c=getchar();
        bool f=0;
        while(c>57||c<48){
            if(c=='-')f=1;
            c=getchar();
        }
        while(c>47&&c<58){
            x=(x<<3)+(x<<1)+(c^48);
            c=getchar();
        }
    }
    inline void write(int x,bool zero=0){
        if(x<0){
            putchar('-');
            write(-x,zero);
        }
        else if(zero)putchar('0');
        else{
            if(x>9)write(x/10,zero);
            putchar((x%10)^48);
        }
    }

    16小时前 来自 上海

    0
  • 继续防伪:

    struct Matrix{
    	int line,column;
    	int array[M][M];
    	Matrix(int r=0,int c=0){
    		if(!c)c=r;
    		line=r,column=c;
    		memset(array,0,sizeof(array));
    	}
    	void unit(){
    		memset(array,0,sizeof(array));
    		for(int i=1;i<=line;i++)array[i][i]=1;
    	}
    	Matrix operator + (const Matrix& t)const{
    		Matrix ans=*this;
    		for(int i=1;i<=line;i++){
    			for(int j=1;j<=column;j++){
    				ans.array[i][j]+=t.array[i][j];
    			}
    		}
    		return ans;
    	}
    	Matrix operator - (const Matrix&t)const{
    		Matrix ans=*this;
    		for(int i=1;i<=line;i++){
    			for(int j=1;j<=column;j++){
    				ans.array[i][j]-=t.array[i][j];
    			}
    		}
    		return ans;
    	}
      	Matrix operator * (const int t)const{
      		Matrix ans=*this;
    		for(int i=1;i<=line;i++){
    			for(int j=1;j<=column;j++){
    				ans.array[i][j]*=t;
    			}
    		}
    		return ans;
    	}
    	Matrix operator * (const Matrix& t)const{
    		Matrix ans(line,t.column);
    		int n=line,m=t.column;
    		for(int i=1;i<=n;i++){
    			for(int j=1;j<=m;j++){
    				for(int k=1;k<=column;k++){
    					ans.array[i][j]+=array[i][k]*t.array[k][j];
    				}
    			}
    		}
    		return ans;
    	}
    	Matrix operator % (const int t)const{
    		Matrix ans=*this;
    		for(int i=1;i<=line;i++){
    			for(int j=1;j<=column;j++){
    				ans.array[i][j]%=t;
    			}
    		}
    		return ans;
    	}
    	Matrix pow(long long n,int MOD){
    		Matrix ans(line,column),a=*this;
    		ans.unit();
    		while(n){
    			if(n&1)ans=ans*a%MOD;
    			a=a*a%MOD;
    			n>>=1;
    		}
    		return ans;
    	}
    	void out(){
    		for(int i=1;i<line;i++){
    			for(int j=1;j<column;j++){
    				cout<<array[i][j]<<" \n"[j==column-1];
    			}
    		}
    	}
    };

    16小时前 来自 上海

    0
  • #include<iostream>
    #include<iomanip>
    #include<istream>
    #include<ostream>
    #include<ios>
    #include<cstdio>
    #include<cstdlib>
    #include<cstdint>
    #include<cstdbool>
    #include<cstring>
    #include<cctype>
    #include<cmath>
    #include<ctime>
    #include<algorithm>
    #include<numeric>
    #include<bitset>
    #include<vector>
    #include<set>
    #include<unordered_set>
    #include<map>
    #include<unordered_map>
    #include<stack>
    #include<queue>
    #include<utility>
    #include<deque>
    #include<limits>
    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<bits/stdc++.h>
    #include<ext/pb_ds/assoc_container.hpp> 
    #include<ext/pb_ds/hash_policy.hpp>
    #include<ext/pb_ds/priority_queue.hpp>
    #include<bits/extc++.h>
    using namespace std;
    using namespace __gnu_cxx;
    using namespace __gnu_pbds;
    #define int long long
    #define pb push_back
    #define ins insert
    #define pir pair<int,int>
    #define x first
    #define y second
    #define std_minpq std::priority_queue<int,vector<int>,greater<int>>
    #define std_maxpq std::priority_queue<int,vector<int>,less<int>>
    #define pbds_minpq __gnu_pbds::priority_queue<int,greater<int>>
    #define pbds_maxpq __gnu_pbds::priority_queue<int,less<int>>
    #define lowbit(n) (n&(-n))
    #define endl '\n'
    #define hp High_Precision
    #define CLOSE ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    const int N=2e5+10,M=1e3+10,MOD=998244353;
    

    16小时前 来自 上海

    0
  • 666好一个防伪,我直接psy救我

    16小时前 来自 上海

    0

热门讨论