- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find number of ways we can reach to the next floor using stairs in Python
Suppose there is a stair case with N steps. One can either go step by step, or at each step, one can take a jump of at most N steps. We have to find the number of ways in which we can go to the top floor. The N value may be large we are only interested in the first and the last K digits of number of ways.
So, if the input is like N = 10 k = 2, then the output will be 63 because there are 10 steps, if there are S number of ways in which we can go to the top, then consider S be of the form wxyz.So, summing wx + yz is 63.
To solve this, we will follow these steps −
- N := N - 1
- c := 2 * ceiling of (k + log(N);base10)
- e := N, b := 2, s := 1
- while e > 0, do
- if e is odd, then
- s := the first p-c digit numbers of (s*b) where p is number of digits in s*b
- e := floor of e/2
- b := the first p-c digit numbers of (b*b) where p is number of digits in b*b
- if e is odd, then
- s := first p - k digit number of s, where p is number of digits in s
- r := s + (2^N) mod 10^k
- return r
Example
Let us see the following implementation to get better understanding −
from math import log10,ceil def solve(N,k): N -= 1 c = 2*ceil(k + log10(N)) e = N b = 2 s = 1 while e > 0: if e % 2 == 1: s = int(str(s*b)[:c]) e //=2 b = int(str(b*b)[:c]) s = str(s)[:k] r = int(s) + pow(2, N, 10**k) return r N = 10 k = 2 print(solve(N,k))
Input
10, 2
Output
63
Advertisements