文章

9

粉丝

126

获赞

11

访问

47.8k

头像
大数进制转换
P1178 北京大学上机题
发布于2022年2月25日 22:25
阅读数 6.4k

 新手,自己琢磨的,轻喷

还能简化,有时间再搞

#include 
using namespace std;
#include 
#include 
#include 
int main ()
{
    char s[30];
    char s2[30];
    char s3[120] = {0};
    while (scanf ("%s", &s) != EOF)
    {
        int cnt = 0;
        int len = strlen (s); 
        while (s[0] > '0')
        {
            s3[cnt++] = (s[len-1] - '0')%2 + '0';//模2
            if (s[0] == '1' && len == 1)
                s[0] = '0';
            if (s[0] == '1')//首位是1
            {
                for (int i = 1; i < len; i++)
                {
                    if ((s[i-1]-'0')%2 == 0)//根据前一位判断是否+5,凡模2等于1的相当于多加一个10/2
                    {
                        s2[i-1] = (s[i]-'0')/2  + '0';//首位是1,除以2过后为0,消除0
                    }
                    else
                        s2[i-1] = (s[i]-'0')/2+5  + '0';
                }
                len --;//除以2之后,长度-1
            }
            else//首位不是1
            {
                s2[0] = (s[...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发