#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
typedef long long lolo;
typedef vector< lolo > vlolo;
template < typename T >
istream& operator>> ( istream&, vector< T >& );
vlolo make_fibo ( lolo rmax )
{
vlolo fib = { 0, 1 };
int i = fib.size() - 1;
while( fib[i] < rmax ) {
fib.push_back( fib[i-1] + fib[i] );
i++;
}
return fib;
}
vlolo mulify( vlolo const& vec )
{
vlolo result;
for ( auto e1 : vec ) {
for ( auto e2 : vec ) {
result.push_back( e1 * e2 );
}
}
auto it = unique( result.begin(), result.end() );
vlolo( result.begin(), it ).swap( result );
return result;
}
void write_results( vlolo const& search_for, vlolo const& search_in )
{
auto it = search_in.begin();
auto et = search_in.end();
for ( auto el : search_for ) {
cout << ( (find( it, et, el ) == et) ? "NIE" : "TAK" ) << endl;
}
}
int main()
{
vlolo iloczyny;
cin >> iloczyny;
vlolo fib = make_fibo( * max_element( iloczyny.begin(), iloczyny.end()) );
vlolo bif = mulify( fib );
write_results( iloczyny, bif );
}
template< typename T >
istream& operator>> ( istream& is, vector< T >& v )
{
int n; is >> n;
v.resize( n );
for( int i = 0; i < n; ++i ) {
is >> v[i];
}
return is;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <algorithm> #include <iostream> #include <vector> using namespace std; typedef long long lolo; typedef vector< lolo > vlolo; template < typename T > istream& operator>> ( istream&, vector< T >& ); vlolo make_fibo ( lolo rmax ) { vlolo fib = { 0, 1 }; int i = fib.size() - 1; while( fib[i] < rmax ) { fib.push_back( fib[i-1] + fib[i] ); i++; } return fib; } vlolo mulify( vlolo const& vec ) { vlolo result; for ( auto e1 : vec ) { for ( auto e2 : vec ) { result.push_back( e1 * e2 ); } } auto it = unique( result.begin(), result.end() ); vlolo( result.begin(), it ).swap( result ); return result; } void write_results( vlolo const& search_for, vlolo const& search_in ) { auto it = search_in.begin(); auto et = search_in.end(); for ( auto el : search_for ) { cout << ( (find( it, et, el ) == et) ? "NIE" : "TAK" ) << endl; } } int main() { vlolo iloczyny; cin >> iloczyny; vlolo fib = make_fibo( * max_element( iloczyny.begin(), iloczyny.end()) ); vlolo bif = mulify( fib ); write_results( iloczyny, bif ); } template< typename T > istream& operator>> ( istream& is, vector< T >& v ) { int n; is >> n; v.resize( n ); for( int i = 0; i < n; ++i ) { is >> v[i]; } return is; } |
English