NC200050. Vanis and Weird Message
描述
输入描述
第一行输入一个正整数n。
第二行输入n个用空格符分隔的整数,表示这个长度为n的序列,第i个数记作。
数据规范:
* .
* .
* 输入数据保证符合题目关于分组的描述。
输出描述
每成功解析一组数,便在一行输出这个数。详见样例。
示例1
输入:
14 4 1 50 -112 29 8 0 7 35 65 -18 -99 13 29
输出:
20090909 2009090920090909
示例2
输入:
5 4 -1 -1 -1 -1
输出:
-1
Python3(3.5.2) 解法, 执行用时: 1368ms, 内存消耗: 86936K, 提交时间: 2020-08-03 14:46:38
# 君指先跃动の光は、私の一生不変の信仰に、唯私の超电磁炮永生き! from sys import stdin, stdout import math from itertools import permutations def solution(): n = int(input().strip()) arr = list(map(int, input().strip().split())) cur = 0 while cur < n: cnt = arr[cur] cur += 1 tmp = '' for i in range(cnt): if arr[cur] < 0: arr[cur] = 256 + arr[cur] tmp += bin(arr[cur])[2:].zfill(8) cur += 1 ans = int(tmp, 2) if tmp[0] == '1': ans -= 1 << (8 * cnt) print(ans) solution()
C++14(g++5.4) 解法, 执行用时: 120ms, 内存消耗: 2664K, 提交时间: 2019-12-07 13:29:47
#pragma GCC optimize("-O3") #include <bits/stdc++.h> using namespace std; typedef long long ll; void Main(); #ifdef ConanYu #include "local.hpp" #else #define debug(...) do { } while(0) int main() { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); Main(); } #endif void Main() { int n; cin >> n; while(cin >> n) { ll ans = 0; for(int i = 0; i < n; i++) { ll t; cin >> t; t &= 0xff; ans <<= 8; ans |= t; } if(n == 4) cout << (int)ans << "\n"; else cout << ans << "\n"; } }
C++(clang++ 11.0.1) 解法, 执行用时: 708ms, 内存消耗: 2568K, 提交时间: 2023-01-18 15:18:03
#include<bits/stdc++.h> using namespace std; int a[10]; void con(int h){ long long sum=0; int b=0; if(a[0]<0)b=1; for(int i=0;i<h;i++) { if(a[i]<0)a[i]+=256; sum=sum*256+a[i]; } if(h==4) cout<<(int)sum<<endl; else cout<<sum<<endl; } int main() { int n,i=0,h; cin>>n; while(i<n){ i++; cin>>h; for(int j=0;j<h;j++,i++) cin>>a[j]; con(h); } return 0; }