负进制转换

[NOIP2000]进制转换

https://ac.nowcoder.com/acm/contest/19305/1028

#include<iostream>
using namespace std;
int main()
{
    long long n,x,i;//n代表十进制数字,x代表base
    int a[1001];
    cin>>n>>x;
    cout<<n<<"=";
    if(n==0)cout<<n;
    for(i=0;n!=0;i++)
    {
        a[i]=n%x;
        n/=x;
        if(a[i]<0){a[i]-=x;n++;}//对于余数为负数的时候:余数减去除数,商+1
        //举例子   -8%-3 = 2x-3 + -2
        //可转换为 -8%-3 = 3x-3 + 1
    }
    //倒着打印
    for(long long j=i-1;j>=0;j--)//上一个循环判断n!=0的时候i-1;
    {
        if(a[j]>=10)cout<<char(a[j]-10+'A');
        else cout<<a[j];
    }
    cout<<"(base"<<x<<")";
    return 0;
}
全部评论

相关推荐

星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务