首页 > 代码库 > 湘潭月赛 逆序数
湘潭月赛 逆序数
逆序数 | ||
Accepted : 10 | Submit : 27 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
题目描述有n张卡片,分别标有数字1~n。有一天Silence把他们按某种序列排好,然后从第一张开始取出一张,再拿一张放到最后面,再取出一张,再拿出一张放到最后面...知道n张卡片全部取走。把取出的卡片按取出的顺序排好,正好是1,2,3,4,....,n。 输入输入不超过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\n",sum); 22 } 23 return 0; 24 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。