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

Đếm tất cả palindrome là bình phương của một palindrome trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm số lượng palindromes là bình phương của một palindrome.

Đối với điều này, chúng tôi sẽ được cung cấp với hai giá trị L và R. Nhiệm vụ của chúng tôi là tìm số lượng siêu palindromes trong phạm vi đã cho. Siêu palindrome là một trong đó cả số và bình phương của nó đều là palindromes.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//checking if the number is a palindrome
bool if_palin(int x){
   int ans = 0;
   int temp = x;
   while (temp > 0){
      ans = 10 * ans + temp % 10;
      temp = temp / 10;
   }
   return ans == x;
}
//returning the count of palindrome
int is_spalin(int L, int R){
   // Upper limit
   int LIMIT = 100000;
   int ans = 0;
   for (int i = 0 ;i < LIMIT; i++){
      string s = to_string(i);
      string rs = s.substr(0, s.size() - 1);
      reverse(rs.begin(), rs.end());
      string p = s + rs;
      int p_sq = pow(stoi(p), 2);
      if (p_sq > R)
         break;
      if (p_sq >= L and if_palin(p_sq))
         ans = ans + 1;
   }
   //counting even length palindromes
   for (int i = 0 ;i < LIMIT; i++){
      string s = to_string(i);
      string rs = s;
      reverse(rs.begin(), rs.end());
      string p = s + rs;
      int p_sq = pow(stoi(p), 2);
      if (p_sq > R)
         break;
      if (p_sq >= L and if_palin(p_sq))
         ans = ans + 1;
   }
   return ans;
}
int main(){
   string L = "4";
   string R = "1000";
   printf("%d\n", is_spalin(stoi(L), stoi(R)));
   return 0;
}

Đầu ra

4