From 5f88695e2dc0b174978e8c0e4131e5bd635139ba Mon Sep 17 00:00:00 2001 From: Vahagn Khachatryan Date: Mon, 25 Nov 2013 15:06:36 +0400 Subject: [PATCH] Facebook Interview Tasks. --- interviews/FacebookInterviewTest.cpp | 60 +++++++++++++++++++++++ interviews/FacebookInterviewTest1.cpp | 70 +++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 interviews/FacebookInterviewTest.cpp create mode 100644 interviews/FacebookInterviewTest1.cpp diff --git a/interviews/FacebookInterviewTest.cpp b/interviews/FacebookInterviewTest.cpp new file mode 100644 index 0000000..9d61326 --- /dev/null +++ b/interviews/FacebookInterviewTest.cpp @@ -0,0 +1,60 @@ +/* Check cf5-opt.vim defs. +VIM: let g:lcppflags="-std=c++11 -O2 -pthread" +VIM: let g:wcppflags="/O2 /EHsc /DWIN32" +VIM-: let g:cppflags=g:Iboost.g:Itbb +VIM-: let g:ldflags=g:Lboost.g:Ltbb.g:tbbmalloc.g:tbbmproxy +VIM-: let g:ldlibpath=g:Bboost.g:Btbb +VIM: let g:argv="" +*/ +#include +#include +#include + +int main ( void ) +{try{ + + // + // Read length. + // + long long n; + std::cin >> n; + if ( n < 4 ) + throw std::runtime_error( "Input length is not enough." ); + // + // Read seq. + // + typedef std::vector arr_type; + arr_type arr(n); + for ( int& i: arr ) + std::cin >> i; + // + // Solve it. + // + long long s = 0; + for ( long long i: arr ) + s += i; + long long d = arr[1]-arr[0]; + if ( d != arr[2]-arr[1] && d != arr[3]-arr[2]) + d = arr[2]-arr[1]; + long long idx = (n+1)*n/2-(s-n*arr[0])/d; + // + // + // + long long missing = arr[0]+idx*d; + std::cout << missing; + + return 0; +} +catch ( const std::exception& e ) +{ + std::cerr << std::endl + << "std::exception(\"" << e.what() << "\")." << std::endl; + return 2; +} +catch ( ... ) +{ + std::cerr << std::endl + << "unknown exception." << std::endl; + return 1; +}} + diff --git a/interviews/FacebookInterviewTest1.cpp b/interviews/FacebookInterviewTest1.cpp new file mode 100644 index 0000000..8d6abae --- /dev/null +++ b/interviews/FacebookInterviewTest1.cpp @@ -0,0 +1,70 @@ +/* Check cf5-opt.vim defs. +VIM: let g:lcppflags="-std=c++11 -O2 -pthread" +VIM: let g:wcppflags="/O2 /EHsc /DWIN32" +VIM-: let g:cppflags=g:Iboost.g:Itbb +VIM-: let g:ldflags=g:Lboost.g:Ltbb.g:tbbmalloc.g:tbbmproxy +VIM-: let g:ldlibpath=g:Bboost.g:Btbb +VIM: let g:argv="" +*/ +#include +#include +#include + +bool find_winner( unsigned n ) +{ + int z = 0; // amount of zeros + int m = 0; // amount of moves + + while ( n ) + { + unsigned b = n & 0x1; // get the last bit. + if ( b ) + m += z; + else + z++; + n >>= 1; + } + return m % 2; +} + +int main ( void ) +{try{ + + // + // Read length. + // + long long n; + std::cin >> n; + // + // Read seq. + // + typedef std::vector arr_type; + arr_type arr(n); + for ( unsigned& i: arr ) + std::cin >> i; + // + // Solve it. + // + for ( unsigned i: arr ) + { + if ( find_winner( i ) ) + std::cout << "First Player" << std::endl; + else + std::cout << "Second Player" << std::endl; + } + + return 0; +} +catch ( const std::exception& e ) +{ + std::cerr << std::endl + << "std::exception(\"" << e.what() << "\")." << std::endl; + return 2; +} +catch ( ... ) +{ + std::cerr << std::endl + << "unknown exception." << std::endl; + return 1; +}} +