实验五 回溯法扩展1
第1关:n位逐位整除数
题目描述:
本关任务:掌握回溯法算法思想,并能利用回溯法算法思想解决n位逐位整除数问题。
n位逐位整除数(简称整除数):从其高位开始,高1位能被整数1整除(显然),高2位能被整数2整除,…,整个n位能被整数n整除。给定整数n,求所有的n位整除数的个数。
例如,整数102450就是一个6位整除数。
编程要求
本关的编程任务是补全右侧代码片段backt\frack中Begin至End中间的代码,具体要求如下:
在backt\frack中,根据回溯法算法的思想,遍历和统计n位逐位整除数的个数。 其中,参数数组a记录满足条件的整除数(整除数长度n超过int64位存储范围,所以用整型数组模拟存储),参数t(初始为1)表示当前整除数长度(t<=n),参数n表示待查询的整除数长度,取地址引用的参数sum表示整除数的个数。
测试输入:
6
预期输出:
1200
分析:
无
代码实现:
//
// main.cpp
// step1
//
// Created by ljpc on 2018/12/8.
// Copyright © 2018年 ljpc. All rights reserved.
//
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
void backtrack(int *a, int t