面接中の知能問題とプログラミング実践

2687 ワード

私はかつて私があちこちからまとめた知能問題(つまり少しテクニックが必要な)の問題を周りの人に解いて、すぐに解決策を出す人は少なくて、更にテクニックに満ちた解決策は言うまでもありません.だから、しばらくの間、初めて接触して、答えが思いつかず、恥ずかしくなく、意識的な訓練と総括が必要です.
命題とその逆か否か命題は互いに等価である
A⇒B⇕¬B⇒¬A
たとえば、すべてのPODタイプがAggregatesである場合、クラスがAggregatesでない場合、PODタイプではありません.
POD⇒Aggregates⇕¬Aggregates⇒¬POD
3つの瓶の蓋は1本の水を交換することができて、100人に水を飲む必要があることを聞いて、少なくとも何本の水を買う必要があります100人の水を飲む問題を解決することができます
1+2 -> 3 1+2+2 -> 6 1+2+2+2 -> 9 ….
100人、3人で1組、計33組、残り1人、つまり100/3=33、100%3=1、3本の水を1本、つまり1組で2本(起動として1本必要)買う必要があるので、結論は明らかで、100/33*2+1=67
def need(n, b):
    return int(n/b*(b-1))+n%b

次に、より従来のプログラミング方法を使用して、必要なキャップの計算を実現します.
int need(int n, int k)
{
    // n:           
    // k:             
    int cnt, drunk, caps = 0, 0, 0;
                // cnt:        
                // drunk:          
                // caps:       
    while (drunk < n)
    {
        ++cnt; ++drunl; ++caps;
        if (caps % k == 0) // if(caps == k)
        {
            ++drunk;
            caps = 1;
        }
    }
    return cnt;
}

int main(int, char**)
{
    std::cout << need(100, 3) << std::endl;
                        // 67
    return 0;
}

かくりつもんだい
会社の年次総会、1人の従業員が当選する確率は110で、彼は10回の抽選の機会があって、彼がとても不幸で、1回も抽選に当たっていない確率はですか?会社の年次総会、1人の従業員が当選する確率は110000で、彼は10000回の抽選の機会があって、彼がとても不幸で、1回も抽選に当たっていない確率はですか?
1−(1−110)10≈1−0.349=0.6511−(1−110000)10000≈1−0.368=0.632
本質は次のとおりです.
limn→∞(1−1n)n=1e
1e≈0.36787944117144233