Input
The input contains multiple test cases, each contains only one integer N (1 <= N <= 2^63 - 1). Proceed to the end of file.
Output
For each test case, print one character on each line, which is the N-th (index begins with 1) character of this infinite string.
Sample Input
1 2 4 8
Sample Output
T . ^ T
題意:開始時有兩個字符串,A = "^__^" (four characters), B = "T.T" (three characters),然後重復執行C=BA,A=B,B = C,問第n個字符是什麼。
分析:因為最終的字符串是從前往後遞推出來的,所以再求解時,我們可以把這個過程逆過去,直到字符串的長度不超過7,輸出即可。
#include#include using namespace std; typedef long long LL; LL a[95]; //保存字符串的長度 int main() { string C = "T.T^__^"; a[0] = 4; a[1] = 3; int i; for(i = 2; i < 90; i++) a[i] = a[i-1] + a[i-2]; LL n; while(cin >> n) { while(n > 7) { int pos = lower_bound(a, a+89, n) - a; n -= a[pos-1]; } cout << C[n-1] << endl; } return 0; }