C++ 寻找并输出11~999之间的数m,它满足m、m^2和m^3均为回文数
回文:各位数字左右对称的整数。
例如:11满足上述条件
int digit(int a) //求这个数是几位数
{
int a1 = 1;
while ((a /= 10) > 0) a1 += 1;
return a1;
}
int overturn(int b) //将数字翻转
{
int num = 0;
for (int i = digit(b) - 1; i >= 0; i--)
{
num += (b % 10) * pow(10, i);
b /= 10;
}
return num;
}
int _tmain(int argc, _TCHAR* argv[])
{
开始:
for (int i = 11; i <= 99999; i++)
if (i == overturn(i) && i*i == overturn(i*i) && i*i*i == overturn(i*i*i))
cout << i << " " << i * i << " " << i * i*i << "为回文数" << endl;
}
int 数取反(int 数)
{
int 取 = 数, 反 = 0, 循 = 1, 环 = 数;
do
{
if ((取 /= 10))++循;
else if (环)
{
反 += (环 % 10)*pow(10, --循);
环 /= 10;
}
else break;
} while (true);
return 反;
}
int _tmain(int argc, _TCHAR* argv[])
{
int 数 = 11;
do
{
if (数取反(数) == 数 && 数取反(pow(数, 2)) == pow(数, 2) && 数取反(pow(数, 3)) == pow(数, 3))
cout << 数 << " " << 数*数 << " " << 数*数*数 << "为回文数" << endl;
} while (++数 <= 99999);
}
投票判断
/*投票判断*/
char n[100];
int i = 0, a = 0, b = 0;
while (scanf_s("%c", &n[i]))
{
if (n[i] == 'A')a++;
else if (n[i] == 'B')b++;
if (n[i]=='\n') break;
i++;
}
if (a == b)printf("E");
else if (a>b)printf("A");
else printf("B");