Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับ palindrome ทั้งหมดซึ่งเป็นกำลังสองของ palindrome ใน C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อค้นหาจำนวนของพาลินโดรมซึ่งเป็นสี่เหลี่ยมจัตุรัสของพาลินโดรม

สำหรับสิ่งนี้ เราจะได้รับค่า L และ R สองค่า หน้าที่ของเราคือค้นหาจำนวนของ super palindromes ในช่วงที่กำหนด super palindrome คือจำนวนที่ทั้งตัวเลขและกำลังสองของมันคือ palindrome

ตัวอย่าง

#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;
}

ผลลัพธ์

4