A+Bproblem哪些题解
2025-06-20 22:16:48
发布于:福建
7阅读
0回复
0点赞
C++专区
方法一:最常用的解法
#include<bits/stdc++.h>
using namespace std;
int main(){
    long long a,b;//定义变量A和B
    cin>>a>>b;//读入A和B
    cout<<a+b;//输出A+B
    return 0;
}
方法二:高精度
#include<bits/stdc++.h>
using namespace std;
const int MX = 100005;
char s[MX], t[MX];
int a[MX], b[MX];
int c[MX]; // 答案数组 
int main() {
    cin >> s >> t;
    int len1 = strlen(s), len2 = strlen(t);
    // 将字符串逆序存入数组,方便高精度加法计算
    for (int i = 0; i < len1; ++i) {
        a[i] = s[len1 - i - 1] - '0';
    }
    for (int i = 0; i < len2; ++i) {
        b[i] = t[len2 - i - 1] - '0';
    }
    int len = max(len1, len2);
    for (int i = 0; i < len; ++i) {
        c[i] += a[i] + b[i];
        if (c[i] >= 10) {
            c[i] -= 10;
            c[i + 1]++; // 进位
        }
    }
    // 找到最高位
    if(c[len]) cout << c[len];
    // 输出结果,逆序输出
    for (int i = len - 1; i >= 0; --i) {
        cout << c[i];
    }
    return 0;
}
方法三:布吉岛
#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long a[5],s=0;
    for (int i=1;i<=2;i++)
    {
        cin>>a[i];
    }for (int i=1;i<=2;i++)
    {
        s+=a[i];
    }for (int i=0;i<=s;i++)
        for (int j=0;j<=s;j++)
            if (i+j==s)
            {
                cout<<s<<endl;
                return 0;
            }
}
方法四:递归
#include <bits/stdc++.h>
using namespace std;
int f(int a,int b,int x){
    if(x==a+b) return x;
    else return f(a,b,x+1);}
int main(){
    int a,b;
    cin>>a>>b;
    printf("%d",f(a,b,1));
    return 0;
}
方法五:0ms
#pragma G++ optimize(-01)
#pragma G++ optimize(-02)
#pragma G++ optimize(-03)
#pragma G++ optimize("Ofast")
#pragma G++ optimize("inline")
#pragma G++ optimize("-fgcse")
#pragma G++ optimize("-fgcse-lm")
#pragma G++ optimize("-fipa-sra")
#pragma G++ optimize("-ftree-pre")
#pragma G++ optimize("-ftree-vrp")
#pragma G++ optimize("-fpeephole2")
#pragma G++ optimize("-ffast-math")
#pragma G++ optimize("-fsched-spec")
#pragma G++ optimize("unroll-loops")
#pragma G++ optimize("-falign-jumps")
#pragma G++ optimize("-falign-loops")
#pragma G++ optimize("-falign-labels")
#pragma G++ optimize("-fdevirtualize")
#pragma G++ optimize("-fcaller-saves")
#pragma G++ optimize("-fcrossjumping")
#pragma G++ optimize("-fthread-jumps")
#pragma G++ optimize("-funroll-loops")
#pragma G++ optimize("-fwhole-program")
#pragma G++ optimize("-freorder-blocks")
#pragma G++ optimize("-fschedule-insns")
#pragma G++ optimize("inline-functions")
#pragma G++ optimize("-ftree-tail-merge")
#pragma G++ optimize("-fschedule-insns2")
#pragma G++ optimize("-fstrict-aliasing")
#pragma G++ optimize("-fstrict-overflow")
#pragma G++ optimize("-falign-functions")
#pragma G++ optimize("-fcse-skip-blocks")
#pragma G++ optimize("-fcse-follow-jumps")
#pragma G++ optimize("-fsched-interblock")
#pragma G++ optimize("-fpartial-inlining")
#pragma G++ optimize("no-stack-protector")
#pragma G++ optimize("-freorder-functions")
#pragma G++ optimize("-findirect-inlining")
#pragma G++ optimize("-frerun-cse-after-loop")
#pragma G++ optimize("inline-small-functions")
#pragma G++ optimize("-finline-small-functions")
#pragma G++ optimize("-ftree-switch-conversion")
#pragma G++ optimize("-foptimize-sibling-calls")
#pragma G++ optimize("-fexpensive-optimizations")
#pragma G++ optimize("-funsafe-loop-optimizations")
#pragma G++ optimize("inline-functions-called-once")
#pragma G++ optimize("-fdelete-null-pointer-checks") 
#include <bits/stdc++.h>
using namespace std;
int n, x;
struct node {
	int data;
	node * next;
};
int main() {
	const int MAX = 2;
    n = MAX;
	node * head, * r, * p, * q;
	head = new node;
	head -> next = NULL;
	r = head;
	for(int i = 1; i <= n; i++) {
		cin >> x;
		p = new node;
		p -> data = x;
		p -> next = NULL;
		r -> next = p;
		r = p;
	}
	p = head;
	while(p -> next != NULL) {
		printf("%d", p -> next -> data + p -> next -> next -> data);
		return 0; 
		p = p -> next;
	}
	return 0;
}
方法六:高精度(2)
#include <bits/stdc++.h>
using namespace std;
string addition(string a,string b){
string c(max(a.size(),b.size())+1,0);
int i=a.size()-1,j=b.size()-1,k=c.size()-1;
for(;i>=0||j>=0;i--,j--,k--){
	int sum = c[k];
	if(i>=0) sum+=a[i]-'0';	
	if(j>=0) sum+=b[j]-'0';
	
	if(sum >= 10){
		c[k-1] = 1;
		c[k]=sum-10;
	}
	
	
		else c[k]=sum;
			}
	for(int i=0;i<c.size();i++){
		c[i]+='0';
	} 
	while(c.size()>1&&c.front() == '0')c.erase(c.begin());
	return c;
}
int main(){
string a,b;
cin>> a>>b;
cout<<addition(a,b);
return 0;
}
方法七:void
#include <bits/stdc++.h>
using namespace std;
string addition(string a,string b){
string c(max(a.size(),b.size())+1,0);
int i=a.size()-1,j=b.size()-1,k=c.size()-1;
for(;i>=0||j>=0;i--,j--,k--){
	int sum = c[k];
	if(i>=0) sum+=a[i]-'0';	
	if(j>=0) sum+=b[j]-'0';
	
	if(sum >= 10){
		c[k-1] = 1;
		c[k]=sum-10;
	}
	
	
		else c[k]=sum;
			}
	for(int i=0;i<c.size();i++){
		c[i]+='0';
	} 
	while(c.size()>1&&c.front() == '0')c.erase(c.begin());
	return c;
}
int main(){
string a,b;
cin>> a>>b;
cout<<addition(a,b);
return 0;
}
方法八:stack函数
#include <iostream>
#include <stack>
#include <stdio.h>
using namespace std;
int main(){
    int cnt=0;
    stack<int>a;
    for(int i=0;i<=1;i++){
        int x;
        scanf("%d",&x);
        a.push(x);
    }
    for(int i=0;i<=1;i++){
        cnt+=a.top();
        a.pop();
    }
    printf("%d",cnt);
    return 0;
}
方法九:一堆#
#include <bits/stdc++.h>
#define ac using
#define wa namespace
#define tle std
#define mle int
#define pe main
#define ce cin
#define re cout
#define acgo return
#define wago 0
#define tlego >>
#define mlego <<
#define pego +
#define cego =
#define rego ;
#define python ,
#define java (
#define javascript )
#define php {
#define visualbasic }
ac wa tle rego
mle pe java javascript php
    mle a python b rego
    ce tlego a tlego b rego
    re mlego a pego b rego
acgo wago rego
visualbasic
方法十:布吉岛
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+9;
string s1,s2;
int a[N],b[N],c[N];
int main(){
    cin >> s1 >> s2;//s1是第一个数,s2是第二个数
    //a,b的长度(位数)
    int lena = s1.size();
    int lenb = s2.size();
    //反向输入
    for(int i = 0;i < lena;i++)a[i] = s1[lena-i-1]-'0';
    for(int i = 0;i < lenb;i++)b[i] = s2[lenb-i-1]-'0';
    int lenc = max(lena,lenb);
    //进行加法的过程
    for(int i = 0;i < lenc;i++){
        c[i] += a[i]+b[i];
        if(c[i] >= 10){
            c[i+1]+=c[i]/10;
            c[i]%=10;
        }
    }
    //判断最高位是否进位
    if(c[lenc])lenc++;
    //逆序输出
    for(int i = lenc-1;i >= 0;i--)cout << c[i];
    return 0;
}
方法十一:#
#define Genshin_Impact_Game int
#define YuanShen main
#define YuanShen_Data namespace
#define qi_tian_shen_xiang return 
#define YuanShen_Data_open using
#define YuanShen_lvxingzhe_spking cout
#define YuanShen_lvxingzhe_listening cin
#define YuanShen_lvxingzhe_jisuan_add(miHoYoa,miHoYob) miHoYoa+miHoYob
//正片开始 
#include<bits/stdc++.h>
YuanShen_Data_open YuanShen_Data std;
Genshin_Impact_Game YuanShen(){
	Genshin_Impact_Game woshidalao1,woshidalao2;
	YuanShen_lvxingzhe_listening>>woshidalao1>>woshidalao2;
	YuanShen_lvxingzhe_spking<<YuanShen_lvxingzhe_jisuan_add(woshidalao1,woshidalao2);
	qi_tian_shen_xiang 0;
}
方法十二:最高内存吗???
#include <bits/stdc++.h>
using namespace std;
int main(){
	long long kun,a,b,c,e;
    cin>>b>>c;
    a = 8888888888888888888888888888888888888888888888888888888888888888888888888888;
    kun = 1;
     
    for (long long i=1;kun<a;kun++){
        if(kun%2==1){
         	e =+1;   
        }else{
            e =-1;
        }
    }
    for (long long i=1;kun<a;kun++){
        if(kun%2==1){
            kun+=2;
        }
    }
	cout<<b+c;
	
	return 0;
}
方法十三
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1010;
int RAND_1(ll a,ll b){
    ll n = a + b;
    return n;
}
int RAND_2(string a, string b, int n[500], int m[500], int ans[501]){
    for(int i = 0; i < a.size(); i++)
		n[i] = a[a.size() - i - 1] - '0';
	for(int i = 0; i < b.size(); i++)
		m[i] = b[b.size() - i - 1] - '0';
	int len_maxn = max(a.size(), b.size()) + 1;
	for(int i = 0; i < len_maxn; i++)
	{
		ans[i] = n[i] + m[i] + ans[i];
		if(ans[i] > 9)
		{
			ans[i + 1]++;
			ans[i] = ans[i] % 10;
		}
	}
	while(ans[len_maxn - 1] == 0 && len_maxn > 0) len_maxn--;
	for(int i = len_maxn - 1; i >= 0; i--) cout << ans[i];
	return 0;
}
int RAND_3(ll a, ll b){
	ll ans = 0;
	for(int i = 0; i < a; i ++ ) {
		ans ++;
	}
	for(int i = 0; i < b; i ++ ) {
		ans ++;
	}
	return ans;
}
int n[1010], m[1010],c[1010];
int main(){
	srand(time(0));
    ll a , b;
    string z , y;
    int x;
    x = 1 + rand() % 3;
    if(x == 1){
    	cin >> a >> b;
    	int ans = RAND_1(a,b);
    	cout << ans;
	}
    if(x == 2){
    	cin >> z >> y;
    	RAND_2(z , y , n , m, c);
	}
	if(x == 3){
		cin >> a >> b;
		int ans = RAND_3(a, b);
		cout << ans;
	}
    return 0;
}
方法十四
#include<bits/stdc++.h>
using namespace std;
int main(){
    long long sum=0;
    for (int i=1;i<=2;i++){
        long long a;
        cin>>a;
        sum+=a;
    }
    cout<<sum;
    return 0;
}
python
n,k=map(int,input().split())
print(n+k)
我没想到C++有十几种解法
这里空空如也


有帮助,赞一个