zoukankan      html  css  js  c++  java
  • 【解题报告】洛谷P1017 进制转换

    【解题报告】洛谷P1017 进制转换

    题目链接

    https://www.luogu.com.cn/problem/solution/P1017

    思路

    我们知道进制的转换是可以从十进制转换到其他进制的

    所以我们考虑是怎么转换的

    假设数字为 (n) ,我们要把它转化成 (k) 进制的话,我们就要对其进行一波操作,每次对它进行魔(模)法,剩下来的数字就是他的对应的进制位置上的数字,举个例子,比如192转化为八进制

    [192 space mod space 8=0 \ 192 /8=24 \ 24 space mod space 8 =0 \ 24/8=3 \ 3 space mod space 8=3 ]

    然后从下往上倒序输出就是 (300_{(8)})

    还原回去

    [3 imes 8^2=192 ]

    成立,所以说明我们的方法是对的

    然后我们考虑负数,负数魔法有余数小于零怎么办啊

    那我们就类似于借位,把余数借成正数再输出

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <string>
    using namespace std;
    int n,r;
    char s[100005];
    int len;
    int main()
    {
    	cin>>n>>r;
    	cout<<n<<"=";
    	while(n!=0)
    	{
    		int divi=n%r;
    		n/=r;
    		if(divi<0)
    		divi-=r,n++;
    		if(divi<10)
    		s[++len]=(char)(divi+48);
    		else
    		s[++len]=(char)((divi-10)+'A');
    	}
    	for(int i=len;i>=1;i--)
    	putchar(s[i]);
    	cout<<"(base"<<r<<")"<<'
    ';
    	return 0;
    }
    
    本博文为wweiyi原创,若想转载请联系作者,qq:2844938982
  • 相关阅读:
    Docker Private Registry
    Dockerfile
    docker存储卷
    392. 判断子序列
    1576. 替换所有的问号
    270. 最接近的二叉搜索树值
    292. Nim 游戏
    680. 验证回文字符串 Ⅱ
    876. 链表的中间结点
    543. 二叉树的直径
  • 原文地址:https://www.cnblogs.com/wweiyi2004/p/15406276.html
Copyright © 2011-2022 走看看