Computer >> Máy Tính >  >> Lập trình >> C ++

In tất cả các chuỗi con của một số mà không có bất kỳ chuyển đổi nào trong C ++


Trong bài toán này, chúng ta được cung cấp một số nguyên n. Và chúng tôi phải in tất cả các chuỗi con của một số có thể được tạo thành nhưng không được phép chuyển đổi chuỗi, tức là chúng tôi không thể chuyển đổi một số nguyên thành chuỗi hoặc mảng.

Hãy lấy một ví dụ để hiểu rõ hơn về chủ đề -

Input: number =5678
Output: 5, 56, 567, 5678, 6, 67, 678, 7, 78, 8

Để giải quyết vấn đề này, chúng ta sẽ cần sử dụng logic toán học. Ở đây, chúng tôi sẽ in bit quan trọng nhất trước, sau đó các bit tiếp theo sẽ được in.

Thuật toán

Step1: Take a 10’s power number based on the number of digits.
Step2: print values recursively and divide the number by 10 and repeat until the number becomes 0.
Step3: Eliminate the MSB of the number and repeat step 2 with this number.
Step4: Repeat till the number becomes 0.

Ví dụ

#include <iostream>
#include<math.h>
using namespace std;
void printSubNumbers(int n) ;
int main(){
   int n = 6789;
   cout<<"The number is "<<n<<" and the substring of number are :\n";
   printSubNumbers(n);
   return 0;
}
void printSubNumbers(int n){
   int s = log10(n);
   int d = (int)(pow(10, s) + 0.5);
   int k = d;
   while (n) {
      while (d) {
         cout<<(n / d)<<" ";
         d = d / 10;
      }
      n = n % k;
      k = k / 10;
      d = k;
   }
}

Đầu ra

Số là 6789 và chuỗi con của một số là -

6 67 678 6789 7 78 789 8 89 9