"Hello World"仅仅是抄代码入入入门,A+B才是真正的开始。
先看题目:
但是可恶的洛谷发出了答案,没办法水了!
想必大家都想直接复制代码,那么。
#include <bits/stdc++.h>
using namespace std;
int a,b;
int main(){
cin>>a>>b;
cout<<a+b;
return 0;
}
but,提交后……
可是他会花的内存有点多
接下来是进阶方法
思路:使用高精度算法以减少内存使用
警告⚠:小朋友建议你认真看思路,尊重别人的劳动成果
- 输入两个字符串一边倒序相加
- 用a,b数组倒序存下字符串
- 用c数组记录a[i]+b[i]的和
- 去除先导0
- 倒序输出
(鄙人不才,不会vector,望大佬指教)
code:
//JIKUN的代码,不要复制,要理解
#include <bits/stdc++.h>//JIKUN的代码,不要复制,要理解
#define int long long//JIKUN的代码,不要复制,要理解
using namespace std;//JIKUN的代码,不要复制,要理解
//JIKUN的代码,不要复制,要理解
const int N=5e5; //JIKUN的代码,不要复制,要理解
string s1,s2;//JIKUN的代码,不要复制,要理解
int a[N],b[N],c[N];//JIKUN的代码,不要复制,要理解
//JIKUN的代码,不要复制,要理解
int main()//JIKUN的代码,不要复制,要理解
{//JIKUN的代码,不要复制,要理解
cin>>s1>>s2;//输入a,b
int len1=s1.size(),len2=s2.size();//JIKUN的代码,不要复制,要理解
int i;//JIKUN的代码,不要复制,要理解
//倒序存入数组
for(i=0;i<len1;i++)//JIKUN的代码,不要复制,要理解
a[len1-i]=s1[i]-'0';//JIKUN的代码,不要复制,要理解
for(i=0;i<len2;i++)//JIKUN的代码,不要复制,要理解
b[len2-i]=s2[i]-'0';//JIKUN的代码,不要复制,要理解
int len=max(len1,len2)+1;//JIKUN的代码,不要复制,要理解
for(i=1;i<=len;i++)//倒序相加
{//JIKUN的代码,不要复制,要理解
c[i]+=a[i]+b[i];//JIKUN的代码,不要复制,要理解
c[i+1]=c[i]/10;//JIKUN的代码,不要复制,要理解
c[i]%=10;//JIKUN的代码,不要复制,要理解
}//JIKUN的代码,不要复制,要理解
while(c[len]==0&&len>1) len--;//去除先导0
for(int i=len;i>=1;i--) cout<<c[i];//倒序输出
return 0;//完结撒花
}//JIKUN的代码,不要复制,要理解
JIKUN的代码,不要复制,要理解