多校5 hdu4919

Exclusive or

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 398    Accepted Submission(s): 173

Problem Description

Given n, find the value of


Note: ⊕ denotes bitwise exclusive-or.

Input

The input consists of several tests. For each tests:

A single integer n (2≤n<10500).

Output

For each tests:

A single integer, the value of the sum.

Sample Input

3
4

Sample Output

6
4

Author

Xiaoxu Guo (ftiasch)

题解中

若 n = 2k + 1,
  f(n) = 4f(k) + 6k
若 n = 2k, f(n) = 2f(k) + 2f(k−1) + 4k−4.

然后在用java大数来写 ,递归的时候用map来记录已经到达的状态。

 1 //package hdu4919;
 2
 3 import java.math.*;
 4 import java.util.*;
 5
 6 public class Main {
 7     Map<BigInteger,BigInteger> hashmap=new HashMap<BigInteger,BigInteger>();
 8
 9     BigInteger dfs(BigInteger n){
10         if(hashmap.get(n)!=null){
11             return hashmap.get(n);
12         }
13         if(n.equals(BigInteger.valueOf(2))){
14             return BigInteger.ZERO;
15         }
16         if(n.equals(BigInteger.valueOf(3))){
17             return BigInteger.valueOf(6);
18         }
19         if(n.equals(BigInteger.valueOf(4))){
20             return BigInteger.valueOf(4);
21         }
22         BigInteger ans=BigInteger.ZERO;
23         if(n.mod(BigInteger.valueOf(2)).equals(BigInteger.ONE)){
24             ans=dfs(n.divide(BigInteger.valueOf(2))).multiply(BigInteger.valueOf(4)).add(n.divide(BigInteger.valueOf(2)).multiply(BigInteger.valueOf(6)));
25             hashmap.put(n, ans);
26             return ans;
27         }
28         else{
29             BigInteger x;
30             x=n.divide(BigInteger.valueOf(2));
31             ans=ans.add(x.multiply(BigInteger.valueOf(4))).add(BigInteger.valueOf(4).negate());
32             ans=ans.add(dfs(x).multiply(BigInteger.valueOf(2))).add(dfs(x.add(BigInteger.ONE.negate())).multiply(BigInteger.valueOf(2)));
33             hashmap.put(n,ans);
34             return ans;
35         }
36     }
37     void work(){
38         BigInteger n;
39         hashmap.clear();
40         Scanner cin=new Scanner(System.in);
41         while(cin.hasNext()){
42             n=cin.nextBigInteger();
43             BigInteger ans=dfs(n);
44             System.out.println(ans.toString());
45         }
46
47     }
48     public static void main(String args[]){
49         new Main().work();
50     }
51 }

多校5 hdu4919

时间: 2024-11-10 11:02:53

多校5 hdu4919的相关文章

2015 ACM多校训练第一场

在下面网址看效果更佳>_< http://mlz000.github.io/2015/08/07/2015-ACM%E5%A4%9A%E6%A0%A1%E8%AE%AD%E7%BB%83%E7%AC%AC%E4%B8%80%E5%9C%BA/ 题外话 这个暑假以前就决定要把这次多校的所有题全补了,中间断断续续,总算把第一场的题补全了,鄙视一下颓废的自己... hdu 5288(1001) OO's Sequence Solution 水题,定义两个数组L[i],R[i]示第i个数左侧和右侧最接

HDU 4864 Task(2014多校--贪心)

Task 比赛当时思路想的差不多,感觉能过的,该处理的也都处理到了,最后还是没过,可能是二分写错了吧-.- 大意:给你n个机器,m个要完成的任务,每个机器跟任务都有两个属性,机器是最大工作时间跟等级,任务是需要工作的时间跟等级.完成一个任务可以得到500*(工作时间)+2*(等级)的报酬.完成任务的条件是机器的工作时间满足任务的需要,等级要大于等于任务的等级,一个机器只能用一次,一个任务也只能用一个机器去完成.需要进行策略选择,使得完成更多的任务. 思路:开始想的就是贪心,也想到了贪心的时候时间

HDU 4864(多校)1004 Task

Problem Description Today the company has m tasks to complete. The ith task need xi minutes to complete. Meanwhile, this task has a difficulty level yi. The machine whose level below this task's level yi cannot complete this task. If the company comp

hdu6069[素数筛法] 2017多校3

/*hdu6069[素数筛法] 2017多校3*/ #include <bits/stdc++.h> using namespace std; typedef long long LL; LL l, r, k; const LL MOD = 998244353LL; int T, n, prime[1100000], primesize; bool isprime[11000000]; void getlist(int listsize) { memset(isprime, 1, sizeof

python_爬校花

如何用python爬取校花图片并保存到本地来? 1. 获取什么数据? 校花名字  name 校花所在学校 school 校花图片的url   img_ulr 2.如何获取? 打开网页http://www.xiaohuar.com/hua/ ,打开开发工具,研究每一张图片对应的html,找规律 通过python 的scrapy框架进行批量爬取 环境声明: python 3.50 scrapy 库 出现了哪些问题? 1. 如何去除重复的url? 通过对获取的url 进行md5,进行去重 2. 如何该

2017Summmer_上海金马五校 F题,G题,I题,K题

以下题目均自己搜 F题  A序列 一开始真的没懂题目什么意思,还以为是要连续的子串,结果发现时序列,简直智障,知道题意之后,好久没搞LIS,有点忘了,复习一波以后,直接双向LIS,处理处两个数组L和R,然后对整个数组扫一遍对于每一个下标取m=min(L[i],R[i]);用ans取2*m-1中的最大值.LIS用nlogn的算法实现,二分用的是lower_bound(),直接看代码. //Author: xiaowuga #include <bits/stdc++.h> #define maxx

2015 HDU 多校联赛 5317 RGCDQ 筛法求解

2015 HDU 多校联赛 5317 RGCDQ 筛法求解 题目  http://acm.hdu.edu.cn/showproblem.php? pid=5317 本题的数据量非常大,測试样例多.数据量大, 所以必须做预处理.也就是用筛法求出全部的F[x],将全部F[x] 打印出来发现.事实上结果不大,最大的数值是7.所以对于每一个区间询问, 直接暴力求取有多少个 1 2 3 4 5 6 7 就可以,从大到小查找.假设出现2个以上 3-7 的数值,那么最大公约数就是该数字. 假设没有出现两个反复

精校全本 TXT epub 龙族

标签: 精校TXT 龙族 江南 级别:粮草+ 在你最孤单最无望的时候,有一扇门会在你身边打开. 路明非等了十八年,在他最衰的那一刻,门开了.   谨以此书献给所有有梦想的衰小孩! --江南 When you feel most lonely and desperate, there will be a door open for you. As long as you have a dream and dare to rise, poor children will also have prou

蒟蒻ACMer回忆录 &#183; 一段弱校ACM的奋斗史

三年半的ACM生涯终于迎来了终点,退役之时,感慨万分,故写此文以纪念逝去的时光,那些为ACM拼搏的日子,那段弱校ACM的奋斗史. 三年半的ACM生涯,窝见证了CUMT从打铁到铜牌的突破,又见证了从铜牌到银牌的突破:见证了集训队员从3人发展到10余人,又见证了ACM实验室的落实. 三年半的ACM生涯,窝经历了太多,有Accepted时的欢笑,有Wrong Answer时的沮丧,有Time Limit Exceeded时的无奈,有Runtime Error时的尴尬,有打铁的失落,有拿牌的惊喜. 13