函数求值一<找规律>
2016-06-08 12:41
671 查看
函数求值
题意:
定义函数g(n)为n最大的奇数因子。求f(n)=g(1)+g(2)+g(3)+…+g(n)。1<=n<=10^8;
思路:
首先明白暴力没法过。问题是如何求解,二分。知道奇数的最大因子是他本身,并且小于等于n的奇数的和很容易就可以求出来(等差数列)。那么剩下的偶数除以2得到n`,然后去求小于等于n`的奇数,最后得解。
<long long> #include<cstdio> typedef long long LL; int main () { LL n,ans; while (~scanf("%lld",&n)) { ans=0; for(;n>=1;n/=2) { if(n%2==0) ans+=n*n/4; else ans+=(n+1)*(n+1)/4; } printf("%lld\n",ans); } return 0; }
相关文章推荐
- mysql 5.7 安装问题
- Python学习笔记-第一个小游戏Pyglatin
- 双守护进程(不死service)-5.0系统以下
- git小记
- 博客系统分析
- Laravel如何优雅的使用Swoole
- 更改eclipse的启动画面
- CUDA资源汇总
- .NET面试.NET Framework 各个版本的区别
- 第十三周项目2-动物这样叫(2)
- #学习笔记#(64)java数组,参数args选择排序
- svn:E175002:Unexpected HTTP status 405'Method Not Allowed
- mysql建索引的几大原则
- 设计模式六大原则
- 非常全面的Swift学习资料整理
- 快速傅里叶变换
- java中抽象类和接口的比较
- 提高hibernate性能的方法
- 一个线程的独白
- 软件项目管理课感想