zoukankan      html  css  js  c++  java
  • 湘潭月赛 逆序数

    逆序数

    Accepted : 10   Submit : 27
    Time Limit : 1000 MS   Memory Limit : 65536 KB

    题目描述

    有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 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<cstdlib>
     5 using namespace std;
     6 typedef long long LL;
     7 
     8 int main()
     9 {
    10     LL n;
    11     while(scanf("%I64d",&n)>0)
    12     {
    13         LL sum=0;
    14         while(n)
    15         {
    16             if((n&1)==1) n++;
    17             if(n==2) break;
    18             n=n/2;
    19             sum=sum+n*(n-1)/2;
    20         }
    21         printf("%I64d
    ",sum);
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    虚拟机的Linux 安装 若干问题(一)
    理解JavaScript的闭包
    javascript里面的引用类型和值类型
    javascript导入自定义模块
    简单了解下CAP定理与BASE定理
    背包问题之完全背包
    背包问题之多重背包
    背包问题之0-1背包
    搜索算法初步总结
    谈一谈“回溯法“
  • 原文地址:https://www.cnblogs.com/tom987690183/p/3735063.html
Copyright © 2011-2022 走看看