AtCoder Beginner Contest 161 D Lunlun Mesa de juego de números + reglas de búsqueda + estructura

AtCoder Beginner Contest 161 El   número de concursantes es 9927   rápido, ver todas las preguntas 5 minutos después del inicio del concurso

AtCoder Beginner Contest 161 D Lunlun Mesa de juego de números + reglas de búsqueda + estructura

Ver https://blog.csdn.net/mrcrack/article/details/104454762 para el catálogo general

Dirección de evaluación en línea https://atcoder.jp/contests/abc161/tasks/abc161_d

Este tipo de problema, la simulación manual, corresponde a miles de datos, o la medición, no es fácil simular errores de datos.

El código de la tabla es el siguiente

#include <cstdio>
#include <algorithm>
#define LL long long
using namespace std;
int a[15];
int judge(LL x){
	int i,top=0;
	while(x){
		a[++top]=x%10;
		x/=10;
	}
	for(i=2;i<=top;i++)
		if(abs(a[i]-a[i-1])>1)return 0;
	return 1;
}
int main(){
	int cnt=0;
	LL i,n;
	scanf("%lld",&n);
	for(i=1;i<=n;i++)
		if(judge(i))cnt++,printf("%lld,",i);
	printf("\ncnt=%d\n",cnt);
	return 0;
}

Compile y ejecute el código de la tabla, ingrese 9999 y obtenga los siguientes datos de salida

1,2,3,4,5,6,7,8,9,
10,11,12,
21,22,23,
32,33,34,
43,44,45,
54,55,56,
65,66,67,
76,77,78,
87,88,89,
98,99,
100,101,
110,111,112,
121,122,123,
210,211,212,
221,222,223,
232,233,234,
321,322,323,
332,333,334,
343,344,345,
432,433,434,
443,444,445,
454,455,456,
543,544,545,
554,555,556,
565,566,567,
654,655,656,
665,666,667,
676,677,678,
765,766,767,
776,777,778,
787,788,789,
876,877,878,
887,888,889,
898,899,
987,988,989,
998,999,
1000,1001,
1010,1011,1012,
1100,1101,
1110,1111,1112,
1121,1122,1123,
1210,1211,1212,
1221,1222,1223,
1232,1233,1234,
2100,2101,
2110,2111,2112,
2121,2122,2123,
2210,2211,2212,
2221,2222,2223,
2232,2233,2234,
2321,2322,2323,
2332,2333,2334,
2343,2344,2345,
3210,3211,3212,
3221,3222,3223,
3232,3233,3234,
3321,3322,3323,
3332,3333,3334,
3343,3344,3345,
3432,3433,3434,
3443,3444,3445,
3454,3455,3456,
4321,4322,4323,
4332,4333,4334,
4343,4344,4345,
4432,4433,4434,
4443,4444,4445,
4454,4455,4456,
4543,4544,4545,
4554,4555,4556,
4565,4566,4567,
5432,5433,5434,
5443,5444,5445,
5454,5455,5456,
5543,5544,5545,
5554,5555,5556,
5565,5566,5567,
5654,5655,5656,
5665,5666,5667,
5676,5677,5678,
6543,6544,6545,
6554,6555,6556,
6565,6566,6567,
6654,6655,6656,
6665,6666,6667,
6676,6677,6678,
6765,6766,6767,
6776,6777,6778,
6787,6788,6789,
7654,7655,7656,
7665,7666,7667,
7676,7677,7678,
7765,7766,7767,
7776,7777,7778,
7787,7788,7789,
7876,7877,7878,
7887,7888,7889,
7898,7899,
8765,8766,8767,
8776,8777,8778,
8787,8788,8789,
8876,8877,8878,
8887,8888,8889,
8898,8899,
8987,8988,8989,
8998,8999,
9876,9877,9878,
9887,9888,9889,
9898,9899,
9987,9988,9989,
9998,9999,
cnt=327

Elija datos especiales para la investigación.

98,99,
100,101,
898,899,
998,999,
1000,1001,
1100,1101,
2100,2101,
7898,7899,
8898,8899,
8998,8999,
9898,9899,
9998,9999,

Tome 8, 9, 10 como ejemplo para mostrar el proceso de generación de datos.

8生成的2位数有87,88,89
9生成的2位数有98,99
10生成的2位数有100,101

其它数据生成过程,不外乎上述三种过程。

Después de familiarizarse con el proceso de generación de datos, construya 100,000 conjuntos de datos que cumplan con la intención de la pregunta y seleccione los datos que se probarán.

El código AC es el siguiente

#include <stdio.h>
#define maxn 100010
#define LL long long
LL rd[maxn]={1,2,3,4,5,6,7,8,9};
int main(){
	int i,id,k;
	scanf("%d",&k);
	i=9,id=0;
	while(i<k){
		if(rd[id]%10==0){//10生成的2位数有100,101
			rd[i]=rd[id]*10;
			rd[i+1]=rd[id]*10+1;
			i+=2;
		}else if(rd[id]%10==9){//9生成的2位数有98,99
			rd[i]=rd[id]*10+8;
			rd[i+1]=rd[id]*10+9;
			i+=2;
		}else{//8生成的2位数有87,88,89
			rd[i]=rd[id]*10+rd[id]%10-1;
			rd[i+1]=rd[id]*10+rd[id]%10;
			rd[i+2]=rd[id]*10+rd[id]%10+1;
			i+=3;
		}
		id++;
	}
	printf("%lld\n",rd[k-1]);
	return 0;
}

 

Publicado 660 artículos originales · elogiado 562 · 480,000 visitas

Supongo que te gusta

Origin blog.csdn.net/mrcrack/article/details/105322122
Recomendado
Clasificación