zoj2729 Sum Up(模拟)

Sum Up


Time Limit: 2 Seconds      Memory Limit: 65536 KB


Vivid has stored a piece of private information, which consisted of a serial of integers in a secret number format. All the stored numbers are in the range [-63, 63]. So every number contains exactly 7 bits - the leftmost bit is the sign bit (0 for positive and 1 for negative), and all other bits represent the absolute value of the number (e.g. 000000 stands for 0, 000001 stands for 1 and 111111 stands for 63). With the sign bit, 1000000 and 0000000 are considered to be equal, both of them stand for 0.

All the numbers have been pushed into 16-bits integers, that is, one 16-bits integer is enough to hold 2 numbers plus 2 bits of another number.

In this problem, you are given a serial of 16-bits integers, and you need to output the sum of these 7-bits integers.

Input:

There are multiple test cases. Each test case begins with an integer N (the number of 16-bits numbers, 0 <= N <= 7000, N is always a multiple of 7). Then N 16-bits numbers follow, all of which are in the range [0, 65535]. A case with N = -1 denotes the end of input, which should not be proceeded.

Output:

For each test case, output an integer indicating the sum of these 7bits-integers in a single line.

Sample Input:

7
1 0 0 0 0 0 0
7
65535 65535 65535 65535 65535 65535 65535
-1

Sample Output:

32
-1008题解:就是给你一些16位的数,这些数字按照二进制一字排开,现在让变成7位,每7位读取一个数,让求这些数字的和;代码:
 1 #include<stdio.h>
 2 const int MAXN=7010;
 3 int m[MAXN],b[MAXN*20];
 4 int main(){
 5     int N;
 6     while(scanf("%d",&N),N!=-1){
 7         for(int i=0;i<N;i++)scanf("%d",m+i);
 8         int sum=0;
 9         int top=1;
10         for(int i=N-1;i>=0;i--){
11             int t=0;
12             while(t<16){
13                 b[top]=m[i]&1;
14                 top++;m[i]>>=1;t++;
15             }
16         }
17         int a=0;
18         for(int i=1;i<top;i++){
19             if(i%7){
20                 a+=b[i]<<(i%7-1);
21             }
22             else{
23                 if(b[i])sum-=a;
24                 else sum+=a;
25                 a=0;
26             }
27         }
28         printf("%d\n",sum);
29     }
30     return 0;
31 }
时间: 2024-11-10 10:38:47

zoj2729 Sum Up(模拟)的相关文章

HDU-4961 Boring Sum STL模拟

给出一个序列A,对于A里面的每个元素,左边最近的能被它整除的元素记为B序列对应位置的,右边最近的是它的整数倍的元素记为C序列对应位置,找不到的记它本身,最后算出对应位置B*C的总和. 容器模拟,按顺序扫一遍,每次如果有符合条件的取出来,即为最近的.最后把它的下标放到对应位置的容器中,然后倒序求一遍,最后求和. #include <iostream> #include <cmath> #include <cstdio> #include <cstring> #

PAT甲题题解-1081. Rational Sum (20)-模拟分数计算

模拟计算一些分数的和,结果以带分数的形式输出注意一些细节即可 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; /* 模拟计算一些分数的和,结果以带分数的形式输出 注意一些细节即可 */ const int maxn=105; const int maxv=50000

java异步任务处理

1.场景 最近做项目的时候遇到了一个小问题:从前台提交到服务端A,A调用服务端B处理超时,原因是前端一次请求往db插1万数据,插完之后会去清理缓存.发送消息. 服务端的有个操作 a.插DB b.清理cache  c.发送消息.1万条数据,说多不多,说少不少.况且不是单单insert.出现超时现象,不足为奇了吧~~ 2.分析 如何避免超时呢?一次请求处理辣么多数据,每次请求处理100条数据,分多次请求处理,可以有效解决超时问题. 为了不影响用户的体验,请求改为ajax 异步请求. 除此之外,仔细分

破解 crackme(“不可逆“函数)

系统 : Windows xp 程序 : crackme 程序下载地址 :http://pan.baidu.com/s/1i41oh9r 要求 : 注册机编写 使用工具 : IDA Pro & OD 可在“PEDIY CrackMe 2007”中查找关于此程序的讨论,标题为“简单分析crackme算法之一”. 运行程序,在Help->Register菜单项中注册,输入测试用户名密码.程序提示错误,错误字串为:“No luck there, mate!”.打开IDA载入程序,通过字串表定位错误

iOS开发之再探多线程编程:Grand Central Dispatch详解

之前关于iOS开发多线程的内容发布过一篇博客,其中介绍了NSThread.操作队列以及GCD,介绍的不够深入.今天就以GCD为主题来全面的总结一下GCD的使用方式.GCD的历史以及好处在此就不做过多的赘述了.本篇博客会通过一系列的实例来好好的总结一下GCD.GCD在iOS开发中还是比较重要的,使用场景也是非常多的,处理一些比较耗时的任务时基本上都会使用到GCD, 在使用是我们也要主要一些线程安全也死锁的东西. 本篇博客中对iOS中的GCD技术进行了较为全面的总结,下方模拟器的截图就是我们今天要介

守望者的逃离(2007年普及组第3题)| 贪心算法

守望者的逃离(2007年普及组第3题) [问题描述] 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率深藏在海底的那加企图叛变,守望者在与尤迪安的交锋中遭遇了围杀.被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去,到那时岛上的所有人都会遇难:守望者的跑步速度为17m/s, 以这样的速度是无法逃离荒岛的.庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复.

Day 23 (06/20)匿名函数、递归

内置函数补充: # print(divmod(73,23))## total_count=73# per_count=23## res=divmod(total_count,per_count)# if res[1] > 0:# page_count=res[0]+1## print(page_count)# ## l=['a','b','c']### for i in enumerate(l):# print(i)## dic={'name':'egon','age':18}# for i i

上拉加载、下拉更新

1.上拉加载 引用官网给出的代码 <ion-content> <ion-list> <ion-item *ngFor="let item of list"> {{item}} </ion-item> </ion-list> <!-- 这是官网给的代码,必须放在列表下方 --> <ion-infinite-scroll (ionInfinite)="doInfinite($event)" t

Codeforces Round #614 (Div. 2) 比赛总结

比赛情况 怒切 \(A,B,C,D\),后面 \(E,F\) 两题技术太菜不会做,不知道什么时候可以补起来. 比赛总结 事实证明: 比赛前喝一瓶抗疲劳饮料对比赛状态的进入有显著效果. 比赛有人陪着打对AC题目有显著效果. 说正经的: 不要紧张,也不要太过放松.这样才有利于发挥出真实水平. 下面就开始 喜闻乐见 的题解吧. A 入门题 枚举找到最近的可用楼层即可.用 \(STL\) 里面的 map 判断一个楼层是否可用使用. Code #include<bits/stdc++.h> #defin