码迷,mamicode.com
首页 > 其他好文 > 详细

湘潭月赛 逆序数

时间:2014-05-19 16:08:53      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   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

 

 

bubuko.com,布布扣
 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\n",sum);
22     }
23     return 0;
24 }
bubuko.com,布布扣

 

湘潭月赛 逆序数,布布扣,bubuko.com

湘潭月赛 逆序数

标签:style   blog   class   code   c   java   

原文地址:http://www.cnblogs.com/tom987690183/p/3735063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!