zoukankan      html  css  js  c++  java
  • XTU1202:逆序数

    题目描写叙述

    有n张卡片,分别标有数字1~n。

    有一天Silence把他们按某种序列排好。然后从第一张開始取出一张,再拿一张放到最后面。再取出一张,再拿出一张放到最后面...知道n张卡片所有取走。

    把取出的卡片按取出的顺序排好,正好是1,2。3,4,....,n。
    如今。告诉你n,Silence希望你帮他计算原来的序列的逆序数。


    比如,n=4时。原来的序列应该是1,3,2。4。这样,先取出卡片1,再把卡片3放到最后面,序列变成了2。4,3。再把2取出来,4放到后面。序列变成了3,4。再把3取出来,4放最后面,再把4取出来,这样取出卡片的顺序就是1,2。3,4了。那么原来序列(1,3。2。4)的逆序数是1.那么答案就是1啦。

    输入

    输入不超过1000个例子,每一个例子一行,一个整数n(1 <= n <= 10^9)。

    输出

    每一个例子输出一行。一个整数,为原来序列的逆序数

    例子输入

    4
    99
    

    例子输出

    1
    1631
    
    
    对于这道题,我仅仅想说
    推吧。。

    能够发现,奇偶一样的
    1,2:  0
    3,4:  1
    5,6:  4
    7,8:  7
    9,10:  14
    11,12:  19
    13,14:  28
    
    
    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    #define ll __int64
    
    int main()
    {
        ll n;
        while(~scanf("%I64d",&n))
        {
            LL ans=0;
            if(n%2==1) n++;
            while(n>2)
            {
                ans+=(n/2-1)*(n/2)/2;
                n=n/2;
                if(n%2) n++;
            }
            printf("%I64d
    ",ans);
        }
        return 0;
    }
    


    
    
    
       
    
  • 相关阅读:
    CF676E:The Last Fight Between Human and AI
    BZOJ2079: [Poi2010]Guilds
    BZOJ4518: [Sdoi2016]征途
    BZOJ2216: [Poi2011]Lightning Conductor
    51nod1766 树上的最远点对
    洛谷P1257 平面上的最接近点对
    BZOJ2144: 跳跳棋
    BZOJ4773: 负环
    BZOJ4552: [Tjoi2016&Heoi2016]排序
    The Falling Leaves(建树方法)
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7010665.html
Copyright © 2011-2022 走看看