华为2012上机题
来源:互联网 发布:软件测试定义 编辑:程序博客网 时间:2024/05/22 16:41
输入一个int N ,统计1-N中含有7或能被7整除的数的个数
思路: 能被7整除的数很好求 N/7 个 。 再求1-N中含有7的数字个数。最后要减去重叠部分
检测含有7的个数的代码如下:
#include <iostream>#include <cmath>#include <ctime>#include <cassert>using namespace std;clock_t start,finish;int factor[11]; //保存 0,1,10,100,1000......尽量减少程序中乘除法模运算的次数。int temp[11]; //保存中间结果,0,1,9*1 + 10,9*19 + 10......便于计算int sum = 0;int search7(int num,int n){assert(num > 0);if (n == 1){if (num < 7){return 0;}else{return 1;}}if (num/factor[n] == 7){return search7(num%factor[n],n - 1) + 6*temp[n-1];}else if (num/factor[n] < 7){return search7(num%factor[n],n - 1) + (num/factor[n])*temp[n-1];}else{return search7(num%factor[n],n - 1) + (num/factor[n] - 1)*temp[n-1] + factor[n];}}int main(){double time;int a;factor[0] = temp[0] = 0;factor[1] = temp[1] = 1;start = clock();for (int i = 2; i < 11; i++){factor[i] = (double)pow((double)10,i-1);temp[i] = 9*temp[i-1] + factor[i];//cout<<temp[i]<<" ";}cout<<search7(2008080808,10)<<endl;finish = clock();time = (double)(finish - start)/CLOCKS_PER_SEC;printf("%f s",time);return 0;}
- 华为2012上机题
- 华为2012上机题
- 华为Java上机题 2012
- 2012华为校园招聘上机笔试题
- 华为2012年两上机题
- 华为Java上机题
- 一道华为上机题
- 华为上机第二题
- 华为上机题
- 一道华为上机题
- 华为上机第二题
- 一道华为上机题
- 华为Java上机题
- 华为上机题
- 2014华为上机题
- 华为上机题
- 华为上机题
- 华为上机笔试题
- xshell九大技巧
- Nutch插件加载流程
- 与英语有关的一个月
- Android提示版本更新的实现
- java commons
- 华为2012上机题
- uboot 之led灯闪烁
- java JNI开发
- 将Qt 动态链接生成的exe及依赖dll打包方法
- windows系统android开发环境搭建(自家用)
- 个人学习技术年总结
- android 电容屏(三):驱动调试之驱动程序分析篇
- 10 Useful Advanced Git Commands
- Android使用Json获取数据实例【这个例子不太好,仅作参考】