#include <bits/stdc++.h> using namespace std; //判断整数n在m进制下是否是回文数 bool huiwen(int n,int m){ int a[1000] = {0}; int k,i; bool r = true; k = 0;//a数组的下标 while(n != 0){ a[k] = n % m; k++; n = n / m; } //遍历a数组,判断回文 for(i = 0;i < k / 2;i++){ if(a[i] != a[k - i - 1]){ r = false; break; } } return r; } int main(){ int n,m,i,c = 0; cin>>n>>m; for(i = 1;i <= n;i++){ if(huiwen(i * i,m)){ c++; } } cout<<c<<endl; return 0; } /************************************************************** Problem: 1547 User: admin Language: C++ Result: Accepted Time:57 ms Memory:2072 kb ****************************************************************/