Gym - 101611D - 思維
阿新 • • 發佈:2018-10-31
題目連結:https://vjudge.net/problem/Gym-101611D
解題思路:
從1開始遍歷找到第一個小於128的數是一個式子,那麼保證了這個式子一定是非負數,因為前面的數是大於等於128的.
然後這樣一輪一輪的下去就ok了.
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; const int mx = 1e5 + 10; int a[mx],n; int find(int x) { ull ans = 0,ret = 1<<7; ull base = 1; int i; for(i=x;i<n;i++){ if(a[i]<128){ ans += a[i]*base; break; } ans += (a[i]-128)*base; base *= ret; } if(ans&1) printf("-%llu\n",ans/2+1); else printf("%llu\n",ans/2); return i+1; } int main() { scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",a+i); } int p = 0; while(p<n){ p = find(p); } return 0; }