hdu 4588 Count The Carries
思路:容易发现二进制表示的数的最低位规律是01010101……;接着是001100110011……;接着是:0000111100001111……
这样我们发现每一位的循环节是2^(i+1),前2^i是0,后面的是1.这样就可以算出每一位1出现的次数。
代码如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #define ll __int64 6 using namespace std; 7 ll a[35]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384, 8 32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608, 9 16777216,33554432,67108864,134217728,268435456,536870912,1073741824, 10 2147483648,4294967296,8589934592,17179869184}; 11 ll sa[35],sb[35],s[100]; 12 int get(int n) 13 { 14 int bit=0; 15 while(n){ 16 bit++; 17 n>>=1; 18 } 19 return bit; 20 } 21 void solve(int n,ll *aa) 22 { 23 ll i,j,nn=n+1; 24 if(n<=0) return; 25 int len=get(n); 26 for(int k=0;k<len;k++){ 27 aa[k]+=nn/a[k+1]*a[k]; 28 j=nn%a[k+1]; 29 if(j>=a[k]) j-=a[k]; 30 else j=0; 31 aa[k]+=j; 32 } 33 } 34 int main() 35 { 36 int n,m,len1,len2; 37 ll c; 38 while(scanf("%d%d",&n,&m)!=EOF){ 39 memset(sa,0,sizeof(sa)); 40 memset(sb,0,sizeof(sb)); 41 memset(s,0,sizeof(s)); 42 solve(m,sa); 43 solve(n-1,sb); 44 for(int i=0;i<35;i++) s[i]=sa[i]-sb[i]; 45 ll ans=0; 46 for(int i=0;i<100;i++){ 47 c=(s[i]>>1); 48 ans+=c; 49 s[i+1]+=c; 50 } 51 printf("%I64d\n",ans); 52 } 53 return 0; 54 }
View Code
转载于:https://www.cnblogs.com/xin-hua/p/3269914.html
hdu 4588 Count The Carries相关推荐
- HDU 4588 Count The Carries 数学
Count The Carries Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest ...
- hdu 4588 Count The Carries 南京邀请赛
题目意思:求a~b 之间数二进制的和 求 进了多少位. 比如 1-3 01+10+11=22 22->30->110 进了 2位 要寻找规律,发现 加到3的时候为22 ...
- [HDOJ4588]Count The Carries(数学,规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4588 题意:从a加到b,每次结果加到a上,看在二进制下一共发生了多少次进位. 把0到n的所有数二进制下 ...
- HDU 3336 Count the string(KMP+DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题意:给你一个字符串,计算其所有前缀在该字符串出现的次数的总和. 思路:next[j]=i,代表 ...
- HDU 3336 Count the string KMP
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3336 如果你是ACMer,那么请点击看下 题意:求每一个的前缀在母串中出现次数的总和. AC代码: # ...
- Hdu 4916 Count on the path
意甲冠军:鉴于一棵树的顶点标签为连续1~n,不是每个网上查询a-b最小的圆点标签路径 这题想了好久,如果1为根节点. 首先如果a-b只是根节点1.答案一定是1. 否则我们用fa[i]表示i节点的父亲, ...
- HDU 5528 Count a * b
Count a * b 推式子 f(n)=∑i=0n−1∑j=0n−1n∤ij=n2−∑i=1n∑j=1nn∣ij=n2−∑i=1n∑j=1nngcd(i,n)∣igcd(i,n)j=n2−∑i=1n ...
- hdu 4472 Count(递推即dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4472 代码: #include <cstdio> #include <cstring ...
- HDU - 6016 Count the Sheep(二分图+思维)
题目链接:点击查看 题目大意:给出左右两个子集分别,再给出k条边,问能否找出四个点,让其连成一条路径 题目分析:一开始看到这个题肯定是个二分图,又因为有边,我就往度数上面想,一看四个点,就在想能不能枚 ...
最新文章
- VS上配置opencv249所添加的附加依赖项
- 破译“生命天书”20年
- 安装 node_Mac下的Node.js安装教程
- hdoj5024【BFS/暴力】
- 蓄电池的容量及内阻测试
- 账号体系——账号合并的历史数据处理
- java 写tb级文件_三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!
- LeetCode 1670. 设计前中后队列(deque)
- 2020年中国OTT大屏服务行业研究报告
- 图文详解什么是OAuth2
- 蓝桥 扫雷 java_Java实现 蓝桥杯VIP 算法提高 扫雷
- java中logger关闭log_Log4J如何关闭Logger对象的IO流资源
- 第四篇、Tomcat 集群
- hdu1113 Word Amalgamation(详解--map和string的运用)
- 通达OA办公系统的短信服务器(CDMA)
- 北京限行规定带来的烦恼
- 组网[ZeroTier]+自建Moon服务
- 香侬科技提出中文字型的深度学习模型Glyce,横扫13项中文NLP记录
- 系统即将关机请保存关机是由nt_电脑频繁自动关机是由NT AUTHORITY SYSTEM初始的分析及解决...
- 前端-HTML-web服务本质-HTTP协议-请求-标签-01(待完善)
热门文章
- 二、uniapp项目(分段器的使用、scroll-view、视频下载、转发)
- Web框架——Flask系列之综合案例——图书管理系统(十)
- LeetCode 2079. 给植物浇水(前缀和)
- LeetCode 1773. 统计匹配检索规则的物品数量
- LintCode MySQL 1918. 第二高的球员的身高
- LeetCode 643. 子数组最大平均数 I
- LintCode 1677. 石头(自定义优先队列)
- LeetCode 888. 公平的糖果交换(哈希set)
- 用递归计算一个数字每一位相加的结果。_leetcode 2 两数相加(c++)
- vivox27升级鸿蒙,vivo x27 系统更新好吗?