博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程之美2.8 | 找符合条件的整数
阅读量:6906 次
发布时间:2019-06-27

本文共 2499 字,大约阅读时间需要 8 分钟。

思路还是相当地巧妙。

求余数的话,(a+b)%n=(a%n+b%n)%n;

用vector来表示整数的话(出现1的位置),可以避免溢出。

注意第20行,在更新remainders[(j+r)%n]时,要确保每个remainders的每个序列都是递增的,不能存在相等的情况。

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 long long findMInZeroOneNum(int n) { 8 vector
> remainders(n); 9 remainders[1].push_back(0);10 11 bool update = false;12 int noupdate = 0;13 for (int i = 1, j = 10 % n; ; j = (j * 10) % n, i++) {14 if (remainders[j].empty()) {15 remainders[j].push_back(i);16 update = true;17 }18 for (int r = 1; r < n; ++r) {19 if (remainders[r].empty()) continue;20 if (i <= remainders[r].back()) continue;21 if (!remainders[(j + r) % n].empty()) continue;22 remainders[(j + r) % n] = remainders[r];23 remainders[(j + r) % n].push_back(i);24 update = true;25 }26 if (!update) noupdate++;27 else noupdate = 0;28 if (noupdate == n || !remainders[0].empty()) break;29 }30 31 if (remainders[0].empty()) return -1;32 else {33 long long ans = 0;34 for (int i = 0; i < remainders[0].size(); ++i) {35 ans += pow(10, remainders[0][i]);36 }37 return ans;38 }39 }40 41 long long bruteForce(int n) {42 if (n <= 0) return -1;43 for (long long i = 1; ; ++i) {44 if (i % n != 0) continue;45 long long tmp = i;46 while (tmp) {47 int d = tmp % 10; 48 if (d != 0 && d != 1) break;49 tmp /= 10;50 }51 if (tmp == 0) return i;52 }53 return -1;54 }55 56 int main() {57 srand(time(NULL));58 int n = rand() % 99;59 60 cout << n << endl;61 long long n1 = findMInZeroOneNum(n);62 cout << n1 << endl;63 long long n2 = bruteForce(n);64 cout << n2 << endl;65 if (n1 != n2) {66 cout << n << " " << n1 << " " << n2 << endl;67 }68 69 return 0;70 }

 

转载于:https://www.cnblogs.com/linyx/p/4001841.html

你可能感兴趣的文章
iOS应用程序状态切换相关
查看>>
第30周五
查看>>
[翻译] CRPixellatedView-用CIPixellate滤镜动态渲染UIView
查看>>
(转)Inno Setup入门(十五)——Inno Setup类参考(1)
查看>>
javaWeb项目中web.xml的xsd( XML Schemas Definition)文件
查看>>
目标检測的图像特征提取之(一)HOG特征
查看>>
海量数据处理面试题集锦
查看>>
开源项目
查看>>
分布式文件系统FastDFS设计原理
查看>>
获取js连接参数js_args
查看>>
phpmailer【PHP邮件】的用法
查看>>
用字典给Model赋值并支持map键值替换
查看>>
MySQL数据库和实例简介
查看>>
常见hash算法的原理
查看>>
DBA_Oracle Event等待事件分析(概念)
查看>>
微软职位内部推荐-SDEII
查看>>
GitHub具体教程
查看>>
Hbase配置java客户端
查看>>
VC皮肤库SkinSharp 1.0.6.6的使用
查看>>
mysql分表方法-----MRG_MyISAM引擎分表法
查看>>