計算水仙花數運算超時問題

zFiiisher發表於2020-11-26

計算水仙花數運算超時問題

計算三次方時如果呼叫cmath標頭檔案就會出現運算超時;
而如果自己定義一個函式的話就不會出現這個問題。

#include<iostream>
using namespace std;
/*這道題非常奇怪
百度後發現如果用標頭檔案<cmath>就會出現運算超時
而自己定義函式則不會
自己定義函式時顯示的運算時間為600ms
原因尚不清楚*/

//定義一個函式
int M(int j,int k)
{
    int t=j;
    for(int l=1;l<k;l++)
    {
        j*=t;
    }
    return j;
}
int main()
{
    int n,x,b;
    cin>>n;
    for(x=M(10,n-1);x<M(10,n);x++)
    {
        b=x;
        int sum=0,a=0,i;
        for(i=1;i<=n;i++)
        {
            a=b%10;
            b/=10;
            sum+=M(a,n);
        }
        if(sum==x)
        {
            cout<<x<<endl;
        }
    }
    return 0;
}

以後有機會一定要搞清楚呼叫標頭檔案和自己定義函式的區別。

相關文章