学习笔记1-统计数字0-n之间所有含1的数字和

145 阅读1分钟

题目来源

很早前在其他地方见过类似的

原题

分析过程

本身这题并不太难 本质上是求f(n) 网上很多种答案了 不赘述 我就做了一个事: 当n>1时候 f(n) = f(n-1) + [数字n本身的1的个数] f(n)=n是一条直线 如果用蛮力方法从n=1 - 4*10^6 打出所有的坐标点会是一条什么样的曲线?

程序打印坐标点

随手写个简单的php程序

php程序
将坐标点输出到文件中

gnuplot画图

plot x,'/Users/yangchao/r';

数据很大 所以程序卡死了很久 这还是是百万级别的模拟 所以运行的时候小心cpu 结果如下图 很直观

gnuplot作图结果
所以可以直观的看出来 曲线是一个缓慢-陡峭 交替爬升的 记录一下这个过程