codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <iostream> #include <vector> #include <cmath> using namespace std; // 数列クラス class Nums { protected: vector<int> Elems; public: Nums(const unsigned int n) { Set(n); } void Set(const unsigned int n) { for (unsigned int i=Elems.size(); i<=n; i++) { Push(i); } } virtual void Push(unsigned int i) {}; int operator[](unsigned int k) { if (k >= Elems.size()) { Set(k); } return Elems[k]; } }; // Fibonacci数列 class ANums : public Nums { public: ANums() : Nums(10) { Elems.push_back(1); Elems.push_back(1); } void Push(unsigned int i) { Elems.push_back(Elems[i-1] + Elems[i-2]); } }; // 数列b class BNums : public Nums { private: ANums A; public: BNums(unsigned int m) : Nums(10), A() { Elems.push_back(m-1); } void Push(unsigned int i) { Elems.push_back(static_cast<int>(ceil(static_cast<double>(Elems[i-1]) * A[i-1] / (A[i-1] + A[i])))); } }; // 数列c class CNums : public Nums { private: BNums B; public: CNums(unsigned int m) : Nums(10), B(m) { Elems.push_back(m-1); } void Push(unsigned int i) { Elems.push_back(Elems[i-1] + ((i%2)?-1:1)*(B[i] - 1)); } }; int main() { const int num = 7110; // 数列cを定義 CNums c(num); // 収束するまで計算 int i; for (i=1; c[i] != c[i-1]; i++); // 書き出し int a = c[i], b = num, k = 0; while (a > 0 && b > 0) { if (k%2) { cout << a << endl; a -= b; } else { cout << b << endl; b -= a; } k++; } return 0; }
Private
[
?
]
Run code
Submit