摘要:
http://poj.org/problem?id=3191此题的解法基于以下几点:(1) 如果一个数是奇数,那么它的二进制形式的最后一位肯定是1,我们可以去掉此 1,就是(x-1)/-2,进入(2)(2) 如果一个数的最后一位为 0 ,我们可以把这个数右移(可以类比以 2 为基的二进制数的操作)一位,然后它的二进制的倒数第二个数就成了最后一个,就是 x=x/-2,然后进入(1)迭代,直到变为 0#include<stdio.h>#include<math.h>int a[40];int main(){ int n,i; while(scanf("%d&quo 阅读全文
posted @ 2012-04-07 17:46
Szz
阅读(310)
评论(0)
推荐(0)
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=4038这题的题意就是给一序列的数,有两种操作,一种是把序列中某个数的值加1,要么在序列中增添一个数为1,然后给出操作数,最后要求这些数的乘积最大,求出这个乘积。做这个题要考虑的细节很多,首先要把负数的个数求出,如果为奇数,那么要把最大的那个负数尽量加到0,就相当于转化为偶数的情况了,然后负数就不用在管了,这时候,序列中如果有0的话,很显然他们相乘就是0,所以尽量把所有的0要变成1,之后,如果操作数还有剩余,就要尽量把所有的1变成2了,因为1在序列中是没有任何用处的,增加到2就是翻一番,用1个操作数达到这种效果 阅读全文
posted @ 2012-04-07 10:16
Szz
阅读(321)
评论(0)
推荐(0)
浙公网安备 33010602011771号