毎日1題
タイトル記述Fibonacci数列は、F[0]=0 F[1]=1 for each i≧2:F[i]=F[i-1]+F[i-2]と定義されているので、Fibonacci数列は、0,1,1,2,3,5,8,13,...、Fibonacci数列における数をFibonacci数と呼ぶ.あなたに1つのNをあげて、あなたはそれを1つのFibonacci数に変えたいと思って、すべてのステップはあなたは現在の数字のXをX-1あるいはX+1に変えることができて、今あなたに1つの数のNを求めて最低でどれだけのステップを必要としてFibonacci数に変えることができます.入力説明:正の整数N(1≦N≦1000000)として入力出力説明:最小ステップ数を出力してFibonacci数になる「例1入力15出力2」
文字列の場合は、アルゴリズムを設計して、合法的なカッコ列であるかどうかを判断します.
文字列Aとその長さnを指定すると、bool値が合法的なカッコ列であるかどうかを表します.
テストサンプル:“()()”,6はtrueテストサンプル:“()a()()”,7はfalseテストサンプル:“()()()”,7はfalse
#include
using namespace std;
int main() {
int N;
cin >> N;
int Fi = 0;
int Fj = 1;
int s, l;
int L = 0;
while (1) {
s = Fi + Fj;
Fi = Fj;
Fj = s;
if (s < N) {
L = N - s;
}
else {
l = s - N;
break;
}
}
if (L > l) {
cout << l << endl;
}
else {
cout << L << endl;
}
return 0;
}
文字列の場合は、アルゴリズムを設計して、合法的なカッコ列であるかどうかを判断します.
文字列Aとその長さnを指定すると、bool値が合法的なカッコ列であるかどうかを表します.
テストサンプル:“()()”,6はtrueテストサンプル:“()a()()”,7はfalseテストサンプル:“()()()”,7はfalse
class Parenthesis {
public:
bool chkParenthesis(string A, int n) {
int flag = 0;
for(int i = 0; i < n; ++i) {
if (A[i] == '(') {
++flag;
}
else if (A[i] == ')') {
--flag;
}
else {
return false;
}
}
return flag == 0;
}
};