http://projecteuler.net/problem=16 [Answer:1366]

 

#include <iostream>
#include <vector>
#include <numeric>

using namespace std;

int main()
{
    vector<int> numbers;
    numbers.push_back( 1 );

    for ( int i = 0; i < 100; ++i )
    {
        for ( size_t k = 0; k < numbers.size(); ++k )
        {
            numbers[k] *= (1<<10);
        }

        for ( size_t k = 0; k < numbers.size() - 1; ++k )
        {
            numbers[k+1] += numbers[k] / 10;
            numbers[k] %= 10;
        }

        while ( numbers.back() >= 10 )
        {
            int tmp = numbers.back() / 10;
            numbers.back() %= 10;
            numbers.push_back( tmp );
        }
    }

    cout << accumulate( numbers.begin(), numbers.end(), 0 ) << endl;
    return 0;
}

發佈了40 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章