A+Bproblem哪些题解
2025-06-20 22:16:48
发布于:福建
5阅读
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++有十几种解法
这里空空如也
有帮助,赞一个