a program that, given a natural number N between 0 and 4999 (inclusively), and M distinct decimal digits X1,X2..XM (at least one), finds the smallest strictly positive multiple of N that has no other digits besides X1,X2..XM (if such a multiple exists). The input file has several data sets separated by an empty line, each data set having the following format: On the first line - the number N On the second line - the number M On the following M lines - the digits X1,X2..XM. For each data set, the program should write to standard output on a single line the multiple, if such a multiple exists, and 0 otherwise. An example of input and output: Input
22
3
7
0
1
2
1
1
Output
110
0
제목은 N의 최소 배수를 찾아서 이 수는 주어진 숫자로만 구성된다는 뜻이다. 예를 들어 110은 22의 배수이고 1과 0으로만 구성된다. 먼저 특수한 예를 볼 수 있습니다. 이 블로그를 보십시오.http://blog.csdn.net/lyy289065406/article/details/6647917 지금 우리는 그것을 01이 아닌 숫자로 확장한다.코드는 다음과 같습니다. #include #include #define MAX 200000 using namespace std; int mod[MAX]; void print(int i,int m,int arr[]) { if(i<=0) { return; } print((i-1)/m,m,arr); cout<>n>>m) { if(n==0) { cout<<0<>arr[i]; } sort(arr,arr+m); for(i=0;i우리는 위 제목의 첫 번째 예로 N=22, M=3, 숫자는 7, 0, 1을 설명한다.일단 N! =0, 그리고 세 개의 숫자 중 하나는 N의 배수가 없다. 그리고 우리는 7, 0, 1의 정렬을mod수조에 병존한다. 즉mod[0]=0,mod[1]=1,mod[2]=7, 그리고 넓이를 우선적으로 훑어본다.mod[3]=0,mod[4]=0,mod[5]=0, 00,01,07을 모두 0으로 기록한다. 왜냐하면 하나의 수는 0으로 시작하지 않기 때문이다. 그리고mod[6]=10,mod[7]=11,mod[8]=17, 그리고 m[9]=70%22=4, m[10]=71%22=5, m[11]=77%22=11,...m[25]=110%22=0, 끝날 때까지 이대로 쭉 가세요.우리는 사실 검색 나무의 넓이를 우선적으로 수조에 옮겨 놓았는데, 매우 간결했다.우리는 검색 트리를 그려서 i값을 알 수 있고, 그 아버지 노드와 조상 노드의 값을 알 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: