UVA - 10396 Vampire Numbers
2015-06-08 19:09
344 查看
题目大意:输入n,找出为数为n的吸血鬼数字。吸血鬼数字即偶数,并且可以拆分成两个不同为10的倍数的数,相乘为它本身。
解题思路:枚举拆分后的两个数,然后判断。
解题思路:枚举拆分后的两个数,然后判断。
#include <cstdio> #include <set> using namespace std; set <int> ans[10]; bool judge(int a, int b, int num, int M) { int A[10] = {0}; for (int i = 0; i < num; i++) { A[a % 10]++; A[b % 10]++; a /= 10; b /= 10; A[M % 10]--; M /= 10; A[M % 10]--; M /= 10; } for (int i = 0; i < 10; i++) if (A[i]) return false; return true; } int main() { for (int i = 10; i < 100; i++) for (int j = i; j < 100; j++) if (i * j > 999 && (i % 10 || j % 10) && i * j % 2 == 0 &&judge(i, j, 4 / 2, i * j)) ans[4].insert(i * j); for (int i = 100; i < 1000; i++) for (int j = i; j < 1000; j++) if (i * j > 99999 && (i % 10 || j % 10) && i * j % 2 == 0 &&judge(i, j, 6 / 2, i * j)) ans[6].insert(i * j); for (int i = 1000; i < 10000; i++) for (int j = i; j < 10000; j++) if (i * j > 9999999 && (i % 10 || j % 10) && i * j % 2 == 0 &&judge(i, j, 8 / 2, i * j)) ans[8].insert(i * j); int n; while (scanf("%d", &n) != EOF) { for (set <int>::iterator it = ans .begin(); it != ans .end(); it++) printf("%d\n", *it); printf("\n"); } return 0; }
相关文章推荐
- 1004-HBase的基本操作
- 恐惧会让你成为一个更糟糕的程序员
- Java基础之线程与多线程操作详解
- 《Unix内核源码剖析》读书笔记03-进程管理【切换执行进程】
- Hibernate中Criteria的完整用法
- Java基础 多线程 解决安全问题 等待唤醒机制 Lock Condition interrupt join setPriority yield
- 设计模式之责任链模式
- 微信开放平台(公众号第三方平台) -- 全网发布
- WinXP 无线技巧“区域没有通过无线网络中的发现”一个可能的原因!
- ASI简单实现网络编程
- Leetcode题解(6):L103/Binary Tree Zigzag Level Order Traversal
- Intent学习
- codeforces Looksery Cup 2015 C. The Game Of Parity
- 每天一个linux命令(58):telnet命令
- 七大排序算法
- opencv pcl confict 冲突
- eclipse下Tomcat7.0启动奔溃问题
- ios常用的基础框架
- java.lang.OutOfMemoryError问题的解决方法
- Mysql 监控工具 – mytop