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 }
  • 相关阅读:
    LeetCode 1110. Delete Nodes And Return Forest
    LeetCode 473. Matchsticks to Square
    LeetCode 886. Possible Bipartition
    LeetCode 737. Sentence Similarity II
    LeetCode 734. Sentence Similarity
    LeetCode 491. Increasing Subsequences
    LeetCode 1020. Number of Enclaves
    LeetCode 531. Lonely Pixel I
    LeetCode 1091. Shortest Path in Binary Matrix
    LeetCode 590. N-ary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/tom987690183/p/3735063.html
Copyright © 2011-2022 走看看