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

Decoding of Varints(阅读理解题 Gym_101611D)

时间:2018-10-02 22:07:47      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:边框   ret   \n   代码   str   splay   .com   ORC   ios   

Decoding of Varints

技术分享图片技术分享图片?

题意&思路: 首先根据红色边框部分的公式算出x,再有绿色部分得知,如果x是偶数则直接除以2,x是奇数则(x+1)/-2。

PS:这题有数据会爆掉unsigned long long,就是在最后奇数转换的时候。所以转换的时候可以变公式为-((x-1)/2+1)。

技术分享图片技术分享图片?

代码:

技术分享图片
 1 #include <iostream>
 2 #include <queue>
 3 #include <cstdio>
 4 #include <algorithm>
 5 #include <cmath>
 6 #include <cstring>
 7 #define INF 0x3f3f3f3f
 8 
 9 using namespace std;
10 typedef unsigned long long ll;
11 const int maxn = 11000;
12 ll buf[maxn];
13 
14 
15 int main(){
16     int n;
17     scanf("%d",&n);
18     for(int i=0; i<n; i++){
19         scanf("%llu",&buf[i]);
20     }
21     for(int i = 0; i<n; i++){
22         int j = i;
23         ll sum = 0,base = 1;
24         while(j<n){
25             if(buf[j]>=128){
26                 sum += (buf[j]-128)*base;
27                 base*=128;
28                 j++;
29             }
30             else{
31                 sum = sum + buf[j]*base;
32                 i = j;
33                 break;
34             }
35         }
36         if(sum&1)
37             printf("%lld\n",(long long)-((sum-1)/2+1));
38         else
39             printf("%llu\n",sum/2);
40     }
41     return 0;
42 }
View Code

 

Decoding of Varints(阅读理解题 Gym_101611D)

标签:边框   ret   \n   代码   str   splay   .com   ORC   ios   

原文地址:https://www.cnblogs.com/sykline/p/9737887.html

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