HDU1128 self number(“最佳化”版暴力)

來源:互聯網
上載者:User

        這題還是想了很長時間的!
        剛開始的思路就是簡單暴力,可是卻TLE了!為啥呢?簡單原因:舉個例子來說明。把132當做generator來計算其的“後代”,要算多少下呢?這個問題將是
    可否解決問題的關鍵。兩種方式:①從132開始一直運算到“後代”是小於1000000的最大整數為止。類比幾個數:132、138、150、156、168......。這個算
    發會逾時,原因是基本計算次數達到10^8了。②其實只需計算132的直接“後代”即可!也即得到138不是self number。為啥?處理的一個數是否是self number
    會從令i=1到i=1000000逐個計算,那麼當i=132時可以得到138不是self number,關鍵當i增加到138時自然就會得到150不是sfle number了。可見,如果從132
    和138一直向下計算就會大量重複計算!這就是TLE的原因了。

 

#include<iostream>using namespace std;const int M=1000000;int main(){bool b[M+1];int i,tem,sum;memset(b,0,sizeof(b));for(i=1;i<=M;i++)    {sum=i;tem=i;while(tem!=0){sum+=tem%10;tem/=10;}if(sum<=M)   b[sum]=1;}for(i=1;i<=M;i++){if(b[i]==0)cout<<i<<endl;  }return 0;}

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.