zoukankan      html  css  js  c++  java
  • ZOJ-Big string(服气思维)

    个人心得:我在分治上看到的,但是感觉跟分治没关系,一眼想到斐波那契数可以找到此时n的字符串,但是无法精确到字母,题解的思路

    真是令人佩服,以BA为基准,然后只要此时的长度大于7那么必然可以减去最大的斐波那契数然后转换为基准,此时直接输出就好了。服气服气

    题目:

    We will construct an infinitely long string from two short strings: A = "^__^" (four characters), and B = "T.T" (three characters). Repeat the following steps:

    • Concatenate A after B to obtain a new string C. For example, if A = "^__^" and B = "T.T", then C = BA = "T.T^__^".
    • Let A = B, B = C -- as the example above A = "T.T", B = "T.T^__^".

    Your task is to find out the n-th character of this infinite string.


    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
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<iomanip>
     6 #include<algorithm>
     7 using namespace std;
     8 #define maxi 0x7FFFFFFFFFFFFFFFLL
     9 long long x[100];
    10 string base="T.T^__^";
    11 void init(){
    12    x[2]=10;
    13    x[1]=7;
    14    for(int i=3;i<100;i++)
    15    {
    16        x[i]=x[i-1]+x[i-2];
    17    }
    18 }
    19 int main()
    20 {
    21    long long n;
    22    init();
    23    while(cin>>n){
    24        while(n>7){
    25         int i=0;
    26         while(i<100&&x[i]<n)
    27             i++;
    28         n-=x[i-1];
    29        }
    30        cout<<base[n-1]<<endl;
    31    }
    32    return 0;
    33 }


  • 相关阅读:
    eval解析的函数传参 object array
    whistle证书过期或不信任
    isa hasa的区别、及理解
    JVM工作原理和特点
    Cookie跨域操作
    关闭当前窗口js
    css遮罩层
    js 获得两个数组的重复元素
    主页变灰
    js 格式化日期
  • 原文地址:https://www.cnblogs.com/blvt/p/7822912.html
Copyright © 2011-2022 走看看