• 2019/3/21分数数列2


    题目描述:
    已知一个分数数列的如下:1/2,3/5,4/7,6/10,8/13,9/15,…。输入该数列的第n项,输出对应项的值(用分数表示)

    其中0<n<=3000

    输入描述:
    多组输入,每组输入一个正整数n,表示该数列的第n项

    输出描述:
    对应于每组输入,输出该项对应的分数表示的值。

    样例输入:
    2011

    样例输出:
    3253/5264

    #include <iostream>
    #include <deque>
    #include <list>
    #include <algorithm>
     
    using namespace std;
     
    class FractionalExpr
    {
    public:
        /**
        * 
        **/
        FractionalExpr()
        {
            init();
            return;
        }
        /**
        *  
        **/
        ~FractionalExpr()
        {
            return;
        }
        /**
         * 
         */
        void init()
        {
            offset = 0;
            
            used_int.clear();
        }
        /**
         * 得到下一个数
         */
        int get_next_int()
        {
            offset ++;
            offset = move(offset);
            return offset;
        }
        /**
         * 
         */
        int move(int off)
        {
            ListInt::iterator iter = used_int.begin();
            for (;iter != used_int.end();++iter)
            {
                if (off < *iter)
                {
                    break;
                }
                off ++;
            }
            used_int.erase(used_int.begin(),iter);
            return off;
        }
        int add(int num)
        {
            ListInt::iterator iter = upper_bound(used_int.begin(),used_int.end(),num);
            used_int.insert(iter,num);
            return 0;
        }
        double operator[](int pos)
        {
            init();
            int denominator = 1;
            int numerator = 0;
     
            for (int i = 1;i <= pos;i++)
            {
                numerator = get_next_int();
                denominator = numerator + i;
                add(denominator);
     
                if (numerator * 1.0 / denominator > max_numerator * 1.0 / max_denominator)
                {
                    max_numerator = numerator;
                    max_denominator = denominator;
                }
            }
            cout << numerator << "/" << denominator << endl;
            
            return 0;
        }
    protected:
        typedef deque<int> DeqInt;
        typedef list<int> ListInt;
     
        ListInt used_int;
        int offset;
     
        int max_denominator;
        int max_numerator;
    private:
    };
    int main()
    {
        FractionalExpr frac;
        int n;
        while(cin>>n)
        {
    	
        frac[n];}
        return 0;
    }
    
    
  • 相关阅读:
    几种常见的树:排序二叉树、平衡二叉树、红黑树、B+树
    网关高可用
    微服务网关GateWay
    微服务网关Zuul
    客户端容错保护Alibaba Sentinel
    客户端容错保护Hystrix
    服务调用Feign
    服务注册与发现Consul
    服务负载均衡调用Ribbon
    服务注册Eureka高级
  • 原文地址:https://www.cnblogs.com/Locking-Shonn/p/12569195.html
Copyright © 2020-2023  润新知