文接上回代码换成
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int N, a, t, f, l = 0, o = 0,d;
cin >> N;
for (int i = pow(10, N - 1); i < pow(10, N); i++)
{
a = i;
f = 0;
while (a != 0)
{
d=1;
t = a % 10;
a /= 10;
for(int y=1;y<=N;y++)
{
d*=t;
}
f+=d;
}
if (f == i)
{
l++;
}
}
for (int j = pow(10, N - 1); j < pow(10, N); j++)
{
a = j;
f = 0;
while (a != 0)
{
d=1;
t = a % 10;
a /= 10;
for(int s=1;s<=N;s++)
{
d*=t;
}
f+=d;
}
if (f == j)
{
o++;
if (o != l)
{
cout << f << endl;
}
else cout << f;
}
}
return 0;
}
就可以实现运行超时的问题
灵感来于
总结:在做每一个pta上的习题时,要明确考察内容,比如此题考的是循环嵌套计算幂,而非调用函数计算,过多取巧就会弄巧成拙;
还是要学好理论课,有的时候一个问题的关键就是来自书上的一个小小的知识点;
最后pow函数是一个浮点运算函数;