最高位对1整除,前2位对2整除,以此类推

1、实验名称:回溯算法的应用

2、实验目的:掌握回溯算法的原理和设计方法

 

3、实验内容:构造一个尽可能大的数,使其从高到低前一位能对1整除,前2位能对2整除,……,前n位能对n整除(假设n不大于15)。记高精度数据为a1 a2……an,题目很明确有两个要求:

    1)a1整除1且

    (a1*10+a2)整除2且……

    (a1*10n-1+a210n-2+……+an) 整除n;

    2)求最大的这样的数。

 

#include
using namespace std;

void fun(int n){
	int min_num=1;
	int max_num=0;
	int temp_max_num=9;
	for(int i=0;imin_num;loop--){
		int temp_loop=loop;
		for(int j=n-1;j>-1;j--){
			wei[j]=temp_loop%10;
			temp_loop/=10;
		}
		int sum=wei[0];
		int count_num=1;
		for(int k=0;k

 

由于C语言中int占4字节,能表示-2^31~2^31-1即-2147483648~2147483647,十位数,但对于这题封顶应该为9位

你可能感兴趣的:(算法分析与设计-回溯法)