HDU 2031数制转换

来源:互联网 发布:淘宝卖家申请蚂蚁花呗 编辑:程序博客网 时间:2024/06/05 07:26
数值转换的核心就是这个代码
while(n){   ans[i++]=n%b;   n/=b;}

其中n是要转换的数(number),b是数制(base)

这个方法本来是用在把一个十进制的数拆成单个数字,比如说

把67990拆成6、7、9、9、0这几个单个数。


那我们把每一位就拆出来放进一个数组,然后倒序输出,在控制台上效果上是把它转换了数制。

#include <iostream>#include <cstdio>#include <cstring>#include <set>#include <queue>#include <algorithm>#include <functional>#include <string>#include <map>#include <cmath>#include <iomanip>using namespace std;const int maxn=100;const int inf=0x3f3f3f3f;int main(){    int n,b;    while(cin>>n>>b)    {        char ans[maxn];        memset(ans,0,sizeof(ans));        if(n<0) {printf("-"); n=-n;}        int len=0;        while(n)        {            char t;            t=n%b+'0';            if(t>'9') t=t-'9'+'A'-1;//这个if只会在大于10进制时起作用。             ans[len++]=t;             n/=b;        }        for(int i=len-1;i>=0;i--) printf("%c",ans[i]);        printf("\n");    }}


原创粉丝点击