找出乘积的每个数字与乘数不重复
来源:互联网 发布:java使用redis做缓存 编辑:程序博客网 时间:2024/04/30 04:40
早上起来看瞎逛,看了个题目,
找出这样的数:
1. 6位正整数
2. 每个数位上的数字不同
3. 其平方数的每个数位不含原数字的任何组成数位
如: 203879 * 203879 = 41566646641
203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
简单的解法(其实有优化的方法,但不适合编程)
#include <iostream>#include <vector>#include <algorithm>void num2vector(long long num, std::vector<int> &vNum){ while (num > 0) { vNum.push_back(num % 10); num /= 10; }}int main(int argc, char *argv[]){ long long a = 0; long long b = 0; std::vector<int> vA, vB, vC; std::vector<int>::iterator vit; for (a = 100000; a < 1000000; a++) { if (vA.size() > 0) vA.clear(); if (vB.size() > 0) vB.clear(); if (vC.size() > 0) vC.clear(); num2vector(a, vA); sort(vA.begin(), vA.end()); vit = std::unique(vA.begin(), vA.end()); if (vit != vA.end()) continue; b = a * a; num2vector(b, vB); sort(vB.begin(), vB.end()); vit = unique(vB.begin(), vB.end()); vB.erase(vit, vB.end()); std::set_intersection(vA.begin(), vA.end(), vB.begin(), vB.end(), std::inserter(vC, vC.begin())); if (vC.size() == 0) { std::cout<<a<<" * "<<a<<" = "<<b<<std::endl; } } return 0;}
结果: 639172 * 639172 = 408540845584
- 找出乘积的每个数字与乘数不重复
- 通过异或找出不重复出现的数字
- 一个存在重复数字的正整数数列,每个数都不超过32,找出其中所有重复的数字
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
- 从2.5亿个数字里面找出不重复的数字的个数
- 从2.5亿个数字里面找出不重复的数字的个数
- 面试题:如何从三亿个整数里面找出不重复的数字的个数
- 找出重复次数最多的数字
- 找出数组中重复的数字
- 找出数组中重复的数字
- 找出第一个重复的数字
- 找出数组中重复的数字
- 找出数组中重复的数字
- 找出重复数字
- 从n个数中找出每个数的重复数
- 生成不重复的数字!
- 学习PHP 301跳转的方法
- linux命令之chown命令
- php curl实现get和post的代码
- 创业心得
- 关于控件ID的学习心得
- 找出乘积的每个数字与乘数不重复
- 敏捷的商业价值是什么,与传统对比的特点是什么?
- windows模拟键盘输入,QT实现虚拟键盘的实现方式
- Codeforces Round #215 (diy.2) C. Sereja and Algorithm
- android客户端与servlet服务器交互简单示例
- 泛型
- Android 学习笔记②
- 如何安装开发环境
- OSPF inter-area routing (1)