zoj 2729 Sum Up(水~!)

嘻嘻。今天的第八道水题。恩 写完题解去玩跳舞毯去。。。

 

这题挺水的,给你16位的数,换算成2进制,然后7位并一位,加和输出。

 

7位的第一位是符号位。

 

#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> using namespace std; int bin[150000],cou; void base(int n,int c) { int a[20],count = 0,i; memset(a,0,sizeof(a)); while( n!=0 ) { a[count++] = n%2; n /= 2;; } for(i=15; i>=0; i--) bin[c++] = a[i]; } int sumup(int i,int k) { int sum = 0,j; for(j=k-1; j>i; j--) sum += ( bin[j]<<(k-j-1) ); if( bin[i] == 1 ) return -sum; return sum; } int main() { int n,num,i,sum; while( scanf("%d",&n)!=EOF && n != -1 ) { memset(bin,0,sizeof(bin)); cou = sum = 0; while( n-- ) { scanf("%d",&num); base(num,cou); cou += 16; } for(i=0; i<cou; i+=7) sum += sumup(i,i+7); printf("%d/n",sum); } return 0; }  

你可能感兴趣的:(c,UP)