10 solutions

  • 6
    @ 2024-1-20 10:34:56
    #include<bits/stdc++.h>
    using namespace std;
    string a,b;//两个字符串存个输入值 
    int x[205],xx[205];//第一个数、第二个数 
    int xxx[205]={};//答案 
    void in(string a,int x[]){//将输入存进int数组里面 
    	int t=a.size();
    	for(int i=0;i<t;i++){
    		x[i]=a[i]-'0';//记得减‘0’ 
    	}
    }
    void turn(string &a){//反转字符串,千万记得取地址! 
    	string s="";
    	long t=a.size();
    	for(int i=t-1;i>=0;i--){
    		s+=a[i];
    	}
    	a=s;
    }
    void add(int a[],int b[],int c[]){//加起来 
    	for(int i=0;i<205;i++){
    		c[i]+=a[i]+b[i];
    		if(c[i]>=10) c[i]-=10,c[i+1]++;//如果大于10这一位减10,下一位加1(进位 
    	}
    }
    void out(int a[]){//输出 
    	int t=204;
    	while(a[t]==0) t--;//排除前面的0 
    	for(int i=t;i>=0;i--){
    		if(!(a[i]>=0&&a[i]<=9)) continue;//保险,以防中间有乱码 
    		cout<<a[i];
    	}
    }
    int main(){
    	cin>>a>>b;
    	turn(a);
    	turn(b);
    	in(a,x);
    	in(b,xx);
    	add(x,xx,xxx);
    	out(xxx);
    	//调用即可 
    	return 0;
    }
    

    不是最优解但也够了

  • 3
    @ 2024-1-23 13:04:58
    #include<iostream>
    #include<string>
    #include<vector>
    using namespace std;
    string a;
    string b;
    int a1[201];
    int b1[201];
    int c1[201];
    int main(){
    	int k=0,h=0,s;
    	cin>>a>>b;
    	int r=max(a.size(),b.size());
    	for(int i=0;i<=r;i++){
    		a1[i]=0;
    		b1[i]=0;
    	}
    	for(int i=a.size()-1;i>=0;i--){
    		a1[k]=a[i]-'0';
    		k++;
    	}
    	for(int i=b.size()-1;i>=0;i--){
    		b1[h]=b[i]-'0';
    		h++;
    	}
    	for(int i=r-1;i>=0;i--){
    	    c1[i]=a1[i]+b1[i];
    	}
    	for(int i=0;i<r;i++){
    	if(c1[i]>=10){
    		    c1[i]%=10;
    			c1[i+1]++;
    		}
    	}
    	
        for(int i=r;i>=0;i--){
            if(c1[i]!=0){
        	    s=i;
        	    break;
    	    }
        }
    	for(int i=s;i>=0;i--){
            cout<<c1[i];
    	}
    }
    
    • 2
      @ 2023-12-9 22:21:59

      太长了,自己看或复制

      #include<string>
      #include<bits/stdc++.h>
      using namespace std;
      class long_int
      {
      	public:
      		string num;
      		long_int(string s)
      		{
      			num=s;
      		}
      		void num_add(string str2)
      		{
      			string str1=num;
      		    string ans;
      		    int i=str1.size()-1,j=str2.size()-1;
      		    int flag=0;
      		    while(i>=0||j>=0||flag)
      			{
      		        int numa=i>=0?str1[i--]-'0':0;
      		        int numb=j>=0?str2[j--]-'0':0;
      		        flag=numa+numb+flag;
      		        ans+='0'+flag%10;
      		        flag/=10;
      		    }
      		    reverse(ans.begin(),ans.end());
      		    num=ans;
      		}
      		string get()
      		{
      			return num;
      		}
      		bool is_small(string str2)
      		{
      			string str1=num;
          		return str1.size()<str2.size()||(str1.size()==str2.size()&&str1<str2);
      		}
      };
      int main()
      {
      	string s,t;
      	cin>>s>>t;
      	long_int a(s);
      	a.num_add(t);
      	cout<<a.get();
      }
      
      • 0
        @ 2024-11-9 9:30:34

        #A1168. 大整数加法

        大大大大大大大

        200位big数,long long也存不下,怎么办呢?

        1.输入

        对于这种数,可以采用字符串输入。将每一位数抽出,存入数组

        void init(int dest[])
        {
            string s;
            cin>>s;
            int len=s.length();
            for(int i=len-1;i>=0;--i)
                a[len-i]=s[i]-'0';
        }
        
      • 0
        @ 2024-1-26 9:27:38
        #include<bits/stdc++.h>
        #include <string>
        using namespace std;
        
        int fn[205],sn[205],ans[210];
        
        void read(int a[])
        {
        	char s[210];
        	cin >> s;
        	int lenth = strlen(s); 
        	for(int i = 0; i < lenth; i++)
        		a[lenth - i - 1] =s[i]-'0';
        } 
        
        void print(int b[])
        {
        	int i;
        	for(i = 200-1; i >= 1; i--)
        		if(b[i] != 0) break;
        	for(; i >= 0; i--)
        	    cout << b[i];
        	cout << endl;
        } 
        
        void add (int a[], int b[], int c[])
        {
        	for(int i = 0; i <= 199; i++)
        	{
        		c[i] += b[i]+a[i];
        		if(c[i] >= 10)
        		{
        			c[i+1] += 1;
        			c[i] -= 10;
        		}
        	}
        }
        
        int main()
        {
        	read(fn);
        	read(sn);
        	add(fn, sn, ans);
        	print(ans);
        	return 0;
        }
        
        • 0
          @ 2024-1-21 11:36:26

          #include<bits/stdc++.h> using namespace std; int l1,l2; int maxlen; int jiashu1[205],jiashu2[205],he[205];

          void input(string s,int a[]) { int len=s.length(); for (int i = 0; i < len; i++) { a[len-i-1] = s[i] - '0'; } }

          void APAadd(int a[],int b[],int c[]) { for (int i = 0; i < maxlen; i++) { c[i] += a[i]+b[i]; if (c[i] >= 10) { c[i] -= 10; c[i+1] += 1; } } }

          void output(int d[]) { if (d[maxlen]==0) { maxlen--; } for (int i = maxlen; i >= 0; i--) { cout << d[i]; } }

          int main () { string n1,n2; cin >> n1 >> n2; input(n1,jiashu1); input(n2,jiashu2); l1 = n1.length(); l2 = n2.length(); maxlen = max(l1,l2); APAadd(jiashu1,jiashu2,he); output(he); return 0; }

          • 0
            @ 2024-1-20 10:10:06
            #include<bits/stdc++.h>
            using namespace std;
            int l1,l2;
            int maxlen;
            int jiashu1[205]={0},jiashu2[205]={0},he[205]={0};
            void input(string s,int a[]){
            	int len=s.length();
            	for(int i=0;i<len;i++){
            		a[len-i-1]=s[i]-'0';
            	}
            }
            void APAadd(int a[],int b[],int c[]){
            	for(int i=0;i<maxlen;i++){
            		c[i]+=(a[i]+b[i]);
            		if(c[i]>=10){
            			c[i]-=10;
            			c[i+1]+=1;
            		}
            	}
            }
            void output(int d[]){
            	if(d[maxlen]==0)maxlen--;
            	for(int i=maxlen;i>=0;i--){
            		cout<<d[i];
            	}
            }
            int main(){
            	string n1,n2;
            	cin>>n1>>n2;
            	input(n1,jiashu1);
            	input(n2,jiashu2);
            	l1=n1.length();
            	l2=n2.length();
            	maxlen=max(l1,l2);
            	APAadd(jiashu1,jiashu2,he);
            	output(he);
            	return 0;
            } 
            
            • 0
              @ 2023-12-23 17:56:14

              其实不长

              #include <iostream>
              using namespace std;
              int a[1005],b[1005],c[1005];
              void s2big(string s,int a[]){
              	a[0]=s.size();
              	for(int i=1;i<=a[0];i++) a[i]=s[a[0]-i]-'0';
              }
              void adding(int x[],int y[],int z[]){
              	z[0]=max(x[0],y[0]);
              	for(int i=1;i<=z[0];i++) z[i]=x[i]+y[i];
              	for(int i=1;i<=z[0];i++){
              		z[i+1]+=z[i]/10;
              		z[i]%=10;
              	}
              	z[0]++;
              	while(z[z[0]]==0&&z[0]>1) z[0]--;
              }
              void print(int a[]){
              	for(int i=a[0];i>=1;i--) cout<<a[i];
              	cout<<" "<<endl;
              }
              int main(){
              	string x,y;
              	cin>>x>>y;
              	s2big(x,a);
              	s2big(y,b);
              	adding(a,b,c);
              	print(c);
              	return 0;
              }
              
              • 0
                @ 2023-10-24 18:51:26
                #include <bits/stdc++.h>
                using namespace std;
                int a[205],b[205],c[205];
                string s1,s2;
                int main(int argc, char **argv){
                	cin >> s1 >> s2;
                	int l1 = s1.length(),l2 = s2.length();
                	for (int i = 1;i <= l1;i++){
                		a[i] = s1[l1 - i] - '0';
                	}
                	for (int i = 1;i <= l2;i++){
                		b[i] = s2[l2 - i] - '0';
                	}
                	int l3 = 1/*索引*/,jw = 0/*进位*/;
                	while(l3 <= l1+1 || l3 <= l2+1){
                		c[l3] = a[l3] + b[l3] + jw;
                		jw = c[l3] / 10;
                		c[l3] %= 10;
                		l3++;
                	}
                	while(c[l3] == 0){	// 删除前导0
                		l3--;
                	}
                	for (int i = l3;i > 0;i--){
                		cout << c[i];
                	}
                	return 0;
                }
                
                • 0
                  @ 2023-10-5 20:56:08
                  #include <iostream>
                  #include <string>
                  using namespace std;
                  
                  int main()
                  {
                  	string A,B;
                  	int lenA,lenB;
                  	int a[300]={},b[300]={},h[300]={};
                  	cin >> A >> B;
                  	lenA = A.length();
                  	lenB = B.length();
                  	for(int i=1;i<=lenA;i++){
                  		a[i] = A[lenA-i]-'0';
                  	}
                  	for(int i=1;i<=lenB;i++){
                  		b[i] = B[lenB-i]-'0';
                  	}
                  	int c=0;
                  	for (int i=1;i<max(lenA,lenB)+1;i++){
                  		if (a[i]+b[i]+c<10){
                  			h[i] = a[i]+b[i]+c;
                  		}else{
                  			h[i] = (a[i]+b[i]+c)%10;
                  		}
                  		c = (a[i]+b[i]+c)/10;
                  	}
                  	if (c!=0){
                  		h[max(lenA,lenB)+1] = 1;
                  		for (int i=max(lenA,lenB)+1;i>0;i--){
                  			cout << h[i];
                  		}
                  	}else{
                  		for (int i=max(lenA,lenB);i>0;i--){
                  			cout << h[i];
                  		}
                  	}
                  
                  	
                  	
                  }
                  
                  • 1

                  Information

                  ID
                  654
                  Time
                  1000ms
                  Memory
                  256MiB
                  Difficulty
                  7
                  Tags
                  # Submissions
                  238
                  Accepted
                  48
                  Uploaded By