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

Автор nipul1, история, 5 лет назад, По-английски

Problem My approach was to keep the multiplication factors in stack and pop them when a bracket ends

code

Please Help I am unable to find the mistake

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

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

The value of factor will most probably overflow if it is something like 9(9(9(9(9(9.........)))

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

    so how can I deal with it, I thought of using modular arithmatic while contest but got stuck in the fact that fermat's theorem can't be applied to non prime numbers for taking mod so how actually we can handle that. thanks for replying

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится

      Fermat's little theorem only comes into play when computing modulo inverse. There are no divisions, so it doesn't really matter if the value you've to take modulo by is prime or not.

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

        actually I had divided the factor value by the top of stack but now I have changed my code a bit and removed division part by recalculating the factor value each time it is needed

        code

        and it is still giving me wrong answer on second test case

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится +2 Проголосовать: не нравится

      I solved it using modular arithmetic.
      There are only additions and multiplications. Why would you need Fermat's theorem?

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

        Now I have changed the code using addition and multiplications but still getting a WA earlier I used division in my logic that's why I needed fermat's theorem Please review the code in my previous comment

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

          you could keep a stack of values instead of doing division you can just go back to the previous value, Example you encounter 2(9(..)).

          You append into your stack [1, 2, 18] as we encounter them in 2 .. 9 order, then after 9's parenthesis is closed you can just pop the 18 and go back to using 2, no need of division.

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

      My approach : Total digits will be at max 500 since each digit will be linked with at least 2 parenthesis and one char. So there are total 500digits. Just brute them every time you encounter ')', do some arithmetic, count frequency of each char. complexity will be (n^2 + m) where n is 500 and m is length of string. AC code https://ideone.com/qXVQCT