问题标题: 酷町堂:2563回文平方数 改错要详细,或发核心代码

0
0
已解决
夏子健
夏子健
初级光能
初级光能

#include<iostream>
#include<cstring>
using namespace std;
int b,a[4],k;
int f(int x,int b)
{
 if(x==0)
 return 0;
 f(x/b,b);
 if(x%b>=10)
 return char(x%b-10+'A');
 else if(x%b<10)
  return x%b;
}
int s1;
bool flag=true;
int main()
{ cin>>b;
 for(int i=1;i<=300;i++)
 {
  s1=f(i*i,b);
  while(s1!=0)
  {
   k++;
   a[k]=s1%10;
   s1/=10;
  }
  for(int j=1;j<=k/2;j++)
  {
   if(a[j]!=a[k-j+1])
   {
    flag=false;
    break;
   }
  }
  if(flag==true)
  cout<<s1<<" "<<b<<endl;
 }  
    return 0;
}


3
已采纳
于子轩
于子轩
初级守护
初级守护
char a[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//36进制内
string change(int n)//n转化为b进制
{
    string r="";//清空r
    int yu;
    while(n>0)
    {
        yu=n%b;
        r=a[yu]+r;
        n/=b;
    }
    return r;
}
void check(int a,int m)//a为平方数,m为原数
{
    string r="";
    r=change(a);
    for(int i=0;i<=r.size()/2;i++)//用这一半和另一半比
    {
        if(r[i]!=r[r.size()-i-1])//一个不对return整个,减少时间
        {
            return; 
        }   
    } 
    cout<<change(m)<<" "<<r<<endl;//没return输出
}

上方核心代码;

另:换一种思路看问题。

0
我要回答