您的位置:首页 > 财经 > 金融 > 美国服务器租用网站_河南项目备案信息网_一个网站如何推广_google在线代理

美国服务器租用网站_河南项目备案信息网_一个网站如何推广_google在线代理

2024/12/23 15:16:24 来源:https://blog.csdn.net/x3477144355/article/details/144456026  浏览:    关键词:美国服务器租用网站_河南项目备案信息网_一个网站如何推广_google在线代理
美国服务器租用网站_河南项目备案信息网_一个网站如何推广_google在线代理

使用栈的场景:

我已经断断续续的发了许多篇有关栈的使用了,本篇依旧是根据栈的特点来完成题目。

我在前面的文章中说过,你可以使用栈完成对一串数字的顺序和逆序输出,换句话说,你可以利用栈获取一串数字的每一位的数字,所以当你遇到要对一串数字的某一位进行操作的时候,你就可以将使用栈作为一种思路。

题目:

输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。

输入格式:

输入在一行中依次给出 3 个整数 A、B 和 D。

输出格式:

输出 A+B 的 D 进制数。

输入样例:

123 456 8

输出样例:

1103

鸣谢用户谢浩然补充数据!

代码长度限制

16 KB

时间限制

200 ms

内存限制

64 MB

栈限制

8192 KB

我的思路: 

思路:

一般对于进制的题目你都可以考虑使用位运算符,(⊙﹏⊙),不过当我学了栈之后我发现,栈的先进后出貌似对于这种计算进制有着天然的优势捏。

我们先计算得出数字的和,然后根据一般的进制转换思路完成每一位的数字,最后再逆序输出。

举个求进制数的例子:

关于如何获得转换进制后的数字呢,我手写了一个关于二进制转换的例子:

这就是简单的求一下11 的 二进制数,右边一列是余数。

图片形式演示栈的使用

 

这就是使用栈解决这个问题的关键部分了,我前面的文章里面并没有将栈抽象出来,其实你抽象出来的结果就是一个盒子,先放进去的东西压在下面(入栈或压栈),后放入的东西堆在上面,然后慢慢地取走最上面的那一个(出栈+删除栈顶元素),直到取完(栈空)为止。接下来看看代码吧

我的代码:

#include<iostream>
#include<stack>
using namespace std;
int main()
{int a,b,d;cin >> a >> b >> d;int s = a+b;if(s == 0){cout << "0";//考虑输入为0的情况return 0;}stack<int> st;//创建一个栈while(s != 0){st.push(s%d);//将元素放入栈里(即压栈)s /= d;}while(!st.empty()){//循环条件:栈不为空cout << st.top();//用cout将栈顶元素输出st.pop();//删除栈顶元素}return 0;
}

到这里就结束啦!!!

欢迎小伙伴们评论区讨论,提问。

我是荒古前,期待你的关注~~~

~~~完结撒花✌y( •̀ ω •́ )y✌~~~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com