zoukankan      html  css  js  c++  java
  • leetcode 1017. 负二进制转换

    题意:

    给出数字 N,返回由若干 "0" 和 "1"组成的字符串,该字符串为 N 的负二进制(base -2)表示。

    除非字符串就是 "0",否则返回的字符串中不能含有前导零。

    示例 1:

    输入:2

    输出:"110"

    解释:(-2) ^ 2 + (-2) ^ 1 = 2

    示例 2:

    输入:3

    输出:"111"

    解释:(-2) ^ 2 + (-2) ^ 1 + (-2) ^ 0 = 3

    示例 3:

    输入:4

    输出:"100"

    解释:(-2) ^ 2 = 4

    提示:

    0 <= N <= 10^9

    思路:

    这是一个数学问题,我们知道如果是转为二进制的话,就是不断取摸。如果对于转为负二进制采用同样的思路,我们的余数会出现负数,这要怎么办?

    假设a / b = c....d,那么c * b + d = a,即c * b + b - b + d = a,(c+1)*b + (d - b) = a,所以当余数为负数时,我们让商加一,余数减去除数(这里为-2),就可以得到每一位上的值

     1 const int maxn=1e9;
     2 class Solution {
     3 public:
     4     string baseNeg2(int N) {
     5         if(N==0)return "0";
     6         string s="";
     7         while(N){
     8             int k=N%(-2);
     9             N/=-2;
    10             if(k<0)N++,k+=2;
    11             s+=('0'+k);
    12         }
    13         reverse(s.begin(),s.end());
    14         return s;
    15     }
    16 };
    View Code
  • 相关阅读:
    68
    56
    Django manager 命令笔记
    Django 执行 manage 命令方式
    Django 连接 Mysql (8.0.16) 失败
    Python django 安装 mysqlclient 失败
    H.264 SODB RBSP EBSP的区别
    FFmpeg—— Bitstream Filters 作用
    MySQL 远程连接问题 (Windows Server)
    MySQL 笔记
  • 原文地址:https://www.cnblogs.com/ljy08163268/p/11761254.html
Copyright © 2011-2022 走看看