Anh chị cho em hỏi em làm bài này lỗi vì sao ạ? Lỗi ngay chỗ em truyền vào ạ
#include <bits/stdc++.h>
using namespace std;
ifstream fi("PALINNUM.inp");
ofstream fo("PALINNUM.out");
int he10(int n)
{
int k=n;
string s;
while (k!=0)
{
s+=k%10+48;
k/=10;
}
if (kt(s)==true) return 0;
return 1;
}
bool kt(string n)
{
int k=n.size()-1, l=k;
for (int i=0; i<=k; i++)
{
if (n[i]!=n[l]) return false;
l--;
}
return true;
}
int doihe(int n)
{
int k=n, kt=0, h;
string s;
for (int i=2; i<=9; i++)
{
k=n;
while (k!=0)
{
s+=k%i+48;
k/=i;
}
if (kt(s)==true)
{
kt=1;
fo << "YES " << i << " ";
}
fo << endl;
}
if (kt==1&&he10(n)==true) fo << "10 ";
if (kt==0&&he10(n)==true)
{
fo << "YES 10 ";
kt=2;
}
for (int i=11; i<=16; i++)
{
k=n;
while (k!=0)
{
h=k%i;
if (k>=10)
{
switch (h)
{
case 'A': k=10; break;
case 'B': k=11; break;
case 'C': k=12; break;
case 'D': k=13; break;
case 'E': k=14; break;
case 'F': k=15; break;
}
int m=k;
while (m!=0)
{
s+=m%10+48;
m/=10;
}
}
else s+=k%i;
k/=i;
}
if (kt(s)==true)
{
if (kt==1) fo << i << " ";
if (kt==0) fo << "YES " << i << " ";
if (kt==2) fo << i << " ";
}
fo << endl;
}
}
int main()
{
int n;
while (n!=0)
{
fi >> n;
doihe(n);
}
fi.close(); fo.close();
}