用 Playground 解一道三年級(jí)的奧數(shù)題

題目:由6,6,7,7,8,8六個(gè)數(shù)字組成的6位數(shù)中,有多少是能被168整除的?

//: Playground - noun: a place where people can play

import UIKit

func isValid(num : Int) -> Bool {
    var v = num
    var i6 = 0
    var i7 = 0
    var i8 = 0
    while(v > 0) {
        let tmp = v % 10
        if(tmp == 6) { i6+=1
        } else if(tmp == 7) { i7+=1
        } else if(tmp == 8) { i8+=1
        } else {
            return false
        }
        v = v/10
    }
    return (i6==2)&&(i7==2)&&(i8==2)
}

let start = Date(timeIntervalSinceNow: 0)

for i in 667788...887766  {
    if (i % 168 == 0) && isValid(num : i) {
        print(i)
    }
}

//把 % 替換為加法能夠快一點(diǎn)點(diǎn)
//let startValue = 667788 + (168 - 667788 % 168)
//for i in stride(from: startValue, through: 887766, by: 168) {
//    if isValid(num: i) {
//        print(i)
//    }
//}

let end = Date(timeIntervalSinceNow: 0)

print(end.timeIntervalSince(start))

<blockquote>想想如果先執(zhí)行isValid(), 運(yùn)行時(shí)間會(huì)相差多少。再驗(yàn)證一下。</blockquote>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容