UVa11645
来源:互联网 发布:我的世界java内存不足 编辑:程序博客网 时间:2024/05/22 17:35
题目链接
简介:
A(n)表示n的二进制中有多少个“11”出现
计算A(0)+A(1)+…+A(n)
分析:
一眼看出递推式:
A(n)=A(n/2)+(n/2和n都是奇数 ? 1:0)
这个式子算A(n)是很简单啦,但是求前缀和我就GG了
这道题实际和 UVA 11038 这题类似,枚举中间,然后处理两边的情况。
不过本题最大的答案会超过ll,要用高精度,不过借鉴大佬的方法,直接用两个数字来保存一个数字,这样能保存到2个ll的长度,就足够存放答案了
tip
说实话我不大懂这道题
//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#define ll long longusing namespace std;const ll M=1e13;ll n,p,q;void add(ll x){ q+=x; p+=q/M; q%=M;}void solve(){ p=q=0; ll a=n,b=1; while (n>1) { add((n>>2)*b); if ((n&3)==3) add((a&(b-1))+1); b<<=1; n>>=1; } if (p) { printf("%lld",p); printf("%013lld\n",q); } else printf("%lld\n",q);}int main(){ int cas=0; while (scanf("%lld",&n)!=EOF&&n>=0) { printf("Case %d: ",++cas); solve(); } return 0;}
阅读全文
0 0
- uva11645
- UVa11645
- UVA11645:Bits
- uva11645 Bits(数位统计)
- UVA11645 Bits【位运算+大数】
- uva11645 - Bits 统计 巧妙的大数
- 最牛华人“程序员”邵中,全世界程序员的命运都可能因他而变
- 小酷M1月销量5万件 充一次电可听200首歌
- 特斯拉 AutoPilot 发生致命事故:自动驾驶真的靠谱吗?
- 简单单利模式
- vivo X7首发评测:狂暴前置+极速指纹
- UVa11645
- 乌班图安装及环境配置
- 泛型与反射机制
- Java中的多线程你只要看这一篇就够了
- java学习初探十七之IO流_FileOutputStream
- 预告:大海捞针的艺术,如何从海量视频里搜出目标图片? | 硬创公开课
- 强强联手:宝马、英特尔、Mobileye携手研发自动驾驶汽车
- 【爱搞机】自拍强机 vivo X7首发视频评测
- ElasticSearch 优化实战