Decoding of Varints(阅读理解题 Gym_101611D)

Posted sykline

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Decoding of Varints(阅读理解题 Gym_101611D)相关的知识,希望对你有一定的参考价值。

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
",(long long)-((sum-1)/2+1));
38         else
39             printf("%llu
",sum/2);
40     }
41     return 0;
42 }
View Code

 

以上是关于Decoding of Varints(阅读理解题 Gym_101611D)的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 67. 把字符串转换成整数阅读理解题?

4609: [Wf2016]Branch Assignment 最短路 DP (阅读理解题)

每日一题 UVA - 213 Message Decoding 模拟解码+读入函数+阅读题

HDU 5514 Game of Flying Circus

UVa 213 Message Decoding (信息编码)

Kafka 消息格式中的变长字段(Varints)