找出1234的一种排列,使得组成的数能被7整除
来源:互联网 发布:软件自动安装器 编辑:程序博客网 时间:2024/05/21 10:53
是腾讯2011年的笔试题,我没看答案,自己想出的笨办法,是按字面意思来,即
先求出所有可能的排列,然后对每种排列验算是否被7整除
关键是生成所有排列,幸好研究过Scheme语言,对递归有心得,代码如下
#include <iostream>#include <stdio.h>using namespace std;int calc(char *p_base_addr, char base_len){ int res = 0, radix = 1; for (int i = base_len-1; i >=0; radix *= 10, i--) { res += radix * p_base_addr[i]; } return res;}void print_res(char *p_base_addr, char base_len){ for (int i = 0; i < base_len; i++) { printf("%d", p_base_addr[i]); } printf("\n");}void swap_f(char *p1, char *p2){ char temp = *p1; *p1 = *p2; *p2 = temp;}void find7(char *p_base_addr, char base_len, char *p_cur_addr, char cur_len){ if (cur_len == 1) { int res = calc(p_base_addr, base_len); if (res % 7 == 0) { printf("==>"); } print_res(p_base_addr, base_len); }else{ for (int i = 0; i < cur_len; i++) { swap_f(&p_cur_addr[0], &p_cur_addr[i]); find7(p_base_addr, base_len, p_cur_addr+1, cur_len-1); //remember to swap back! swap_f(&p_cur_addr[0], &p_cur_addr[i]); } }}int main(){ char a[4] = {1, 2, 3, 4}; find7(a, 4, a, 4); return 0;}
- 找出1234的一种排列,使得组成的数能被7整除
- 1-9九个数字组成一个九位数 如果从左边起取出1个数字,需要能被1整除,取出两个数字组成的数能被2整除,取出三个数字组成的数能被3整除,依次类推
- poj 2356 Find a multiple 【抽屉原理应用】【在n个数组成的数列中找出若干个连续数使它们之和能被n整除】
- 找出区间 [a,b] 中能被 7 整除或含有数字 7 的数的个数
- 2.8 找出整除n的只有0, 1的数
- 全排列的一种实现
- 一种全排列的方式
- 一连串1组成的数被n整除问题
- 多少个1组成的整数可以被2011整除?
- 多少个1组成的整数可以被2016整除?
- 多少个1组成的整数可以被2011整除?
- 多少个1组成的整数可以被2011整除?
- 多少个1组成的整数可以被2011整除
- 给定一个数组,按序排列,从数组找出若干个数,使得这若干个数字的和与M最为接近,(背包问题)
- 排列数组使得偶数在奇数的前面
- 一种小数转分数的算法(不限整除)C++
- poj 1152 数论(最小的进制n使得输入能被n-1整除)
- 一种约束排列的生成算法
- java-算法-选择排序、插入排序
- 4.11 chown、fchown和lchown函数-文件用户与用户组
- 不用j-linkv也能够调试ok6410
- WebService服务的简单使用
- hdu—1005 Number Sequence
- 找出1234的一种排列,使得组成的数能被7整除
- 人和人的差异,就在于业余时间
- 高性能 HTTP服务器 qHttpd
- Flash Builder 4 语言元素图标的含义
- 怎么用Metrowerks codewarrior去生成.bin文件
- 线程安全及不可变性
- rmq问题(区间最值)
- LINUX中mount命令详解
- 高性能HTTP服务器 Apache