14 条题解
-
3
这里采用多种方法求解。
方法一:读入·运算·输出
#include <bits/stdc++.h> using namespace std; int a,b; int main(){ cin>>a>>b; cout<<a+b; return 0; }方法二:“数手指”方法
#include <bits/stdc++.h> using namespace std; int a,b,ans=0; int main() { cin>>a>>b; for (int i=1;i<=a;i++) ans++; for(int i= 1;i<=b;i++) ans++; cout<<ans; return 0; }方法三:从算法数据结构的角度思考 设计一个算法:先将a和b插入到一个数据结构(栈、队列或堆)中,非空时,将头上的元素取出,如果大于1则拆成它减1和1(根据自己的喜好)再插入,否则统计答案。
栈写法
#include <bits/stdc++.h> using namespace std; int a,b,ans=0; stack<int> s; int main(){ cin>>a>>b; s.push(a); s.push(b); while(!s.empty()){ int x=s.top(); s.pop(); if(x>1){ s.push(x-1); s.push(1); } else ans+=x; } cout<<ans; return 0; }队列写法
#include <bits/stdc++.h> using namespace std; int a,b,ans=0; queue<int> q; int main(){ cin>>a>>b; q.push(a); q.push(b); while(!q.empty()){ int x=q.front(); q.pop(); if(x>1){ q.push(x-1); q.push(1); } else ans+=x; } cout<<ans; return 0; }堆写法
#include <bits/stdc++.h> using namespace std; int a,b,ans=0; priority_queue<int> h; int main(){ cin>>a>>b; h.push(a); h.push(b); while(!h.empty()){ int x=h.top(); h.pop(); if (x>1) { h.push(x-1); h.push(1); } else ans+=x; } cout<<ans; return 0; }方法四:使用高精度加法
#include <bits/stdc++.h> using namespace std; char s1[100], s2[100]; int a[100], b[100], c[100]; int main() { scanf("%s%s",s1+1,s2+1); int la=strlen(s1+1),lb = strlen(s2+ 1),lc; lc=max(la,lb); for (int i = 1; i <= la; i++) a[i] = s1[la - i + 1] - '0'; for (int i = 1; i <= lb; i++) b[i] = s2[lb - i + 1] - '0'; memset(c, 0, sizeof(c)); for (int i = 1; i <= lc; i++) { c[i] += a[i] + b[i]; c[i + 1] = c[i] / 10; c[i] %= 10; } if (c[lc + 1] > 0) lc++; for (int i = lc; i >= 1; i--) printf("%d", c[i]); printf("\n"); return 0; }方法五:将方法三和方法四结合
#include <bits/stdc++.h> using namespace std; int a,b,c[100],lc=1; priority_queue<int> h; int main() { scanf("%d%d", &a, &b); h.push(a); h.push(b); memset(c,0,sizeof(c)); while (!h.empty()) { int x=h.top(); h.pop(); if (x>1){ h.push(x-1); h.push(1); } else { c[1]+=x; for (int i=1;i<=lc;i++){ c[i+1]+=c[i]/10; c[i]%=10; } if(c[lc+1]>0) lc++; } for(int i=lc;i>=1;i--) cout<<c[i]; cout<<endl; return 0; }你竟然认真的看完了!!! 恭喜你,把简单 的问题复杂 化了!要是你真的看懂了,就说明你太没事闲的了!
-
2
做出这道题,那么恭喜你踏上了万里征程的第一步!
这是一道适合入门级选手练手的题目,本篇题解为大家介绍 cin 和 cout 。
cin :标准输入流。
输入:
cin>>变量名;
多个输入:cin>>变量名1>>变量名2……;cout :标准输出流。
输出变量:
cout<<变量名;
输出单个字符:cout<<'字符';
输出一串字符:cout<<"一串字符";
输出换行:cout<<endl;本题代码及解析
#include<iostream>//头文件,可调用cin、cout using namespace std;//标准命名空间 int main(){//主函数 int a,b;//定义变量 cin>>a>>b;//输入a,b cout<<a+b;//输出a,b之和 return 0;//返回0 }
- 1
信息
- ID
- 5059
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 2222
- 已通过
- 1478
- 上传者