hdu 2031 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2031

其实这个题可以直接用stl中的栈的 不过我试了一下用数组模拟栈 发现自己的问题

题目很简单 就是每次不停地求商 把余数放入栈中 最后一口气弹出就行了

※写模拟的时候出现问题 p=st;表示p的指针指向st[0] 而不是自己想的栈底 所以要先p++后进数 相当于st[0]不用※

代码如下:

#include<iostream>
#include
<cstdio>
using namespace std;
char a[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int num;
int st[100];
int *p=st;
void push(int n)
{
p
++;
*p=n; //注意此处先改变指针 后进入数据

}
int pop()
{
int temp=*p;
p
--;
return temp;
}
int main()
{
int n,m,i,j,k,r,count=0,temp=0;
bool is_under;
while(scanf("%d %d",&n,&m)!=EOF)
{
is_under
=0;
if(n<0)
{
is_under
=1;
n
=-n;
}
count
=0;
while(n!=0)
{
r
=n%m;
n
=n/m;
push(r);
count
++;
}
if(is_under)
printf(
"-");
for(i=0;i<count;i++)
{
temp
=pop();
printf(
"%c",a[temp]);
}
p
=st;
printf(
"\n");
}
//system(
"pasue");
return 0;
}

posted on 2011-08-31 16:25  渔家傲  阅读(177)  评论(0编辑  收藏  举报

导航