• 湘潭月赛 逆序数


    逆序数

    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 }
  • 相关阅读:
    浅谈线性 Linear
    Github TinyRenderer渲染器课程实践记录
    蓝点无限UWB TDOA 低功耗标签 功耗测试
    UWB DW1000 BP30 测距代码架构
    C语言
    C语言
    张量tensor 和张量分解 tensor decomposition
    Manifold learning流行学习和谱聚类
    机器学习里面的核kernel, 维数灾难
    机器学习评价方法
  • 原文地址:https://www.cnblogs.com/tom987690183/p/3735063.html
Copyright © 2020-2023  润新知