Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
hm...初始化没做好。In Reply To:大侠们, 帮我看看, 不会处理 k == 64, 所以用了高精, 在zoj 过了, 在poj 挂了, %I64d 的也考虑了 Posted by:semonteer at 2005-11-12 14:44:50 > #include<stdio.h> > > int t,k; > long long n; > char bit[100]; > char N[100]; > char Max[100]; > char Diff[100]; > char Mdiff[100]; > > bool cmp(char *a, char *b, int k) > { > if(a[k] == 0 && b[k] == 1) > return true; > if(a[k] == 1 && b[k] == 0) > return false; > bool flag = false; > for(int i = k-1; i >= 0; i--) > { > if(a[i] == b[i]) > continue; > if(a[i] > b[i]) > flag = true; > else // a[i] < b[i] > flag = false; > return flag && a[k] == 0 && b[k] == 0 > || !flag && a[k] == 1 && b[k] == 1; > } > return false; > } > > void sub(char *a, char *b, char *c, int k) > { > int C; > if(b[k] == 1) > { > C = 0; > for(int i = 0; i < k; i++) > { > c[i] = a[i] + b[i] + C; > if(c[i] > 1) > c[i] -= 2, C = 1; > else > C = 0; > } > c[k] = 0; > } > else // b[k] == 0 > { > C = 0; > for(int i = 0; i < k; i++) > { > c[i] = 2 + a[i] - b[i] - C; > if(c[i] < 2) > C = 1; > else > C = 0, c[i] -= 2; > } > c[k] = 0; > } > } > > int main() > { > scanf("%d",&t); > while(t--) > { > scanf("%d",&k); > scanf("%s",bit); > scanf("%I64d",&n); > > if(n < 0) > N[k+1] = 1, n = -n; > else > N[k+1] = 0; > > for(int i = 0; i < k; i++) > { > N[i] = (n&1); > n = (n>>1); > } > > Max[k] = Mdiff[k] = Max[k+1] = Mdiff[k+1] = 0; > for(int i = 0; i < k; i++) > { > if(bit[i] == 'p') > Max[k-1-i] = 1; > else > Max[k-1-i] = 0; > Mdiff[i] = 1; > } > > sub(Max, N, Diff, k+1); > > if(cmp(N,Max,k+1)) > printf("Impossible\n"); > else > { > if(cmp(Diff,Mdiff,k+1)) > { > printf("Impossible\n"); > } > else > { > for(int i = k-1; i >= 0; i--) > { > if(Diff[k-1-i] == 1) > { > if(bit[i] == 'p') > bit[i] = '0'; > else > bit[i] = '1'; > } > else > { > if(bit[i] == 'p') > bit[i] = '1'; > else > bit[i] = '0'; > } > } > printf("%s\n",bit); > } > } > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator