10624 - Super Number
2015-07-23 12:58
399 查看
题目链接
题意:给出n到m的范围,求出一个数在前i位数组成的数字能被i整除。假设存在输出这个数,假设不存在。输出-1.
思路:回溯,每次放第i位,然后推断是否符合题意。这题踩着时间过去的2.6s(看了下别人的题解。能够降低取模次数来节省时间)。
代码:
题意:给出n到m的范围,求出一个数在前i位数组成的数字能被i整除。假设存在输出这个数,假设不存在。输出-1.
思路:回溯,每次放第i位,然后推断是否符合题意。这题踩着时间过去的2.6s(看了下别人的题解。能够降低取模次数来节省时间)。
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 35; int arr[MAXN]; int n, m, flag; int mod(int d) { int sum = 0; for (int i = 0; i < d; i++) { sum = (sum * 10 + arr[i]) % d; } return sum; } int dfs(int cur) { if (cur == m) return true; for (int i = 0; i <= 9; i++) { arr[cur] = i; if (cur < n - 1 || (cur >= n - 1 && !mod(cur + 1))) { if (dfs(cur + 1)) return true; } } return false; } int main() { int cas, t = 1; scanf("%d", &cas); while (cas--) { scanf("%d%d", &n, &m); flag = 0; for (int i = 1; i <= 9; i++) { arr[0] = i; if (dfs(1)) { flag = 1; break; } } printf("Case %d: ", t++); if (flag) { for (int i = 0; i < m; i++) printf("%d", arr[i]); printf("\n"); } else printf("-1\n"); } return 0; }
相关文章推荐
- Cocos2dx-获取网络图片并显示
- CentOS下安装hadoop
- NSError && NSException
- setOnPageChangeListener 过时了怎么办?
- Redis千万级的数据量的性能测试
- 算法问题收集
- FastDFS是一个开源的轻量级分布式文件系统
- const
- RH9.0如何从窗口界面进入命令行界面
- Google Chrome浏览器各版本直接下载地址
- 我在网站开发中经常用到的几个js函数01
- C 和 C++ 混合代码 cmath编译出错
- AES加密解密在JAVA和ANDROID下互通
- iOS数据存储
- SQLServer找出执行慢的SQL语句
- JCS的学习与应用三:内存缓存应用
- 64位系统找到到.Net Framework Data Provider方法
- Cocos2dx-Android混编实现头像切换(JNI使用)
- Android 高斯算法在"在路上"APP 的实现
- Mongodb亿级数据量的性能测试