找符合条件的数(编程之美)
来源:互联网 发布:科比职业生涯总数据 编辑:程序博客网 时间:2024/05/17 04:41
任意一正整数 N,求一个最小的正整数 M(M > 1),使得 N * M 的十进制表示式里只有 1 和 0 .
分析:
对于正整数 N = 7 ,只需依次取值如 X
X 1 10 100 1000
mod N 1 3 2 6
因此,6 + 1 首先得 7,则最小值是 1000 + 1 .
代码(待优化):
#include <iostream>#include <cmath>using namespace std;const unsigned long long maxNum = 0x8000000000000000; unsigned long long mode[20] = {0}; /* 能保存最大为1e+19 */unsigned long long POW10(int a){if(a < 0) return 0;if(a == 0) return 1;unsigned long long valTemp = 10, result = 1;while(a > 0){if(a &= 0x1)result *= valTemp;valTemp *= valTemp;a >>= 1;}return result;}unsigned long long findMultiply(unsigned long long N){if(N <= 0) return 0;if(N == 1) return 1;unsigned long long result = 0;unsigned long long currentval = 1;short i = 0;/* for(; i < 20; ++i) */for(; currentval < maxNum; currentval *= 10){/* 最多 19 次*/mode[i] = currentval % N;if(mode[i] == 0){result = currentval;return result;}else{for(short r = 1; r <= i; ++r){for(short start = 0; start < i; ++start){unsigned long long sumMode = mode[i];result = currentval;short begin = start;short len = r;while(begin < i && len > 0){sumMode += mode[begin];result += POW10(begin);if(sumMode == N)return result;++begin;--len;}}}}++i;}return 0;}int main(){unsigned long long N = 0;while(cin >> N) {unsigned long long result = findMultiply(N);if (result == 0) cout << "Not exist!" <<endl; else{cout << "The least number: " << (result / N) << endl;cout << "The multi result: " << result <<endl;}}return 0;}
运行结果:
0 0
- 找符合条件的数(编程之美)
- 《编程之美》找符合条件的数
- 《编程之美》 符合条件的数
- 编程之美——找符合条件的整数
- 编程之美2.8 找符合条件的整数
- 编程之美 2.8 找符合条件的正数
- 编程之美——找符合条件的整数
- 编程之美-找符合条件的整数
- 编程之美——找符合条件的整数
- 【编程之美2.8】找符合条件的整数
- 编程之美——找符合条件的整数
- 编程之美2.8找符合条件的整数
- 编程之美-找符合条件的整数
- 编程之美:找符合条件的整数
- [编程之美] PSet2.8 找符合条件的整数
- 编程之美2.8 找符合条件的整数
- 编程之美2.8 找符合条件的整数
- 编程之美——找符合条件的整数
- vmware中的bridge、nat、host-only的区别
- python打开文件或目录的方法
- 存储过程中的事务
- SharePoint 2013 App Development读书笔记3
- 蛛儿你不懂什么是幸福
- 找符合条件的数(编程之美)
- myEclipse 出现换行符和空格符 解决方案
- 部署cocos2d-2.2之后的版本(不包含3.0)
- 基于SSL协议的双向认证 - 双向认证 [3]
- I/O 模型,阻塞非阻塞,同步异步
- SGU 101 输出欧拉路径
- **"Chinese"
- .NET SqlHelper类
- CentOS 安装 clamav