Блог пользователя Swayam78

Автор Swayam78, история, 3 месяца назад, По-английски

Here , u just have to take a = c^d ,Then check if it do satisy the condition or not , if it doesn't then cout -1 , else cout a.

Proof: In my solution (283677605) you only ever add a bit to a if exactly one of c and d contains that bit, otherwise you either get a contradiction on the spot, or you don't add the bit and move on

why is that If you add that bit to a then (looking just at that bit) a | b=1 and so 1−c=d . If you don't add that bit, then a & c=0 and so b=d . If neither b=d nor c ^ d=1 holds then you can't construct such a . Note that carrying over never happens throughout the process.

. You can skip the latter cases and check if that value of a works, at the end. This is exactly equivalent to setting a=c ^ d and checking if it works.

283646208

  • Проголосовать: нравится
  • +25
  • Проголосовать: не нравится

»
3 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

With the help of truth table of all possible combinations for the i pos bit.

»
3 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

.

»
3 месяца назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

I also want proof of it as I went with most common solution of constructing a bit by bit

»
3 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Dayyum :D I went too brute i guess haha

  • »
    »
    3 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Almost Everybody have done the same.

    • »
      »
      »
      3 месяца назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Yeah and I even considered carry and now i feel like carry part was totally wrong there but it was not even needed so no effect on solution :P

      • »
        »
        »
        »
        3 месяца назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        did your carry approach get ac? if yes can u explain it pls

        • »
          »
          »
          »
          »
          3 месяца назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Yes, it was accepted but I guess i did a bit more than what was required.

          Actually I ran it in such a way that i was considering making a binary no. that gives carry and one which doesn't. And most probably it would have worked even if i was only considering to make a binary string which would just not give carry.

          • »
            »
            »
            »
            »
            »
            3 месяца назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            ik its just overkill but i am interested to know how it works. but arent there many binary no possible solutions if u consider carry part

            • »
              »
              »
              »
              »
              »
              »
              3 месяца назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              exactly there are but i was taking just any 2 of previous step. I used just two string there and at any point i could get at most 4 strings and i took just any 2 out of them and go to next point. So simply i had to work on only 62*4 strings. That ain't much ig

»
3 месяца назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

wait damn how does this work? also how did you get this idea? just looking at samples or something

»
3 месяца назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Cool!

Proof: In my solution (283677605) you only ever add a bit to $$$a$$$ if exactly one of $$$c$$$ and $$$d$$$ contains that bit, otherwise you either get a contradiction on the spot, or you don't add the bit and move on

why is that

. You can skip the latter cases and check if that value of $$$a$$$ works, at the end. This is exactly equivalent to setting $$$a=c$$$ ^ $$$d$$$ and checking if it works.

  • »
    »
    3 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Thanks.

  • »
    »
    3 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Can you please explain , Why we don't take care of carry part?

    • »
      »
      »
      3 месяца назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Think about it, you have $$$a$$$ | $$$b = d + (a$$$ & $$$c)$$$. If the bit of $$$a$$$ you're looking at is $$$0$$$ then this is just $$$b=d$$$, there is no addition thus no carrying over. If it's $$$1$$$ then you must have $$$1 = d + c$$$, so it's either $$$0+1$$$ or $$$1+0$$$, also no carrying. (you suppose you didn't get any carry from the last bit, by induction)

»
3 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Could someone tell me what's wrong w/ my code? I also just did bit by bit comparisons: 283629286