负进制转换

[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;
}
全部评论

相关推荐

牛客266927136号:为啥实习经历写这么少,项目经历反而大写特写,最重要的还是实习经历吧,写具体点,什么场景下做了什么事,解决了什么问题,优化了什么场景,性能提升了多少多少
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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