Número entero hijo
Enlace del título: luogu P1151
Idea general
Para un número de cinco dígitos a1a2a3a3a5, se puede convertir en tres números.
Son: a1a2a3, a2a3a4, a3a4a5
y luego requieren que estos tres números sean divisibles por un K.
Debe generar un número de cinco dígitos en el rango de 10,000 a 30,000 que cumpla con los requisitos.
Ideas
Echemos un vistazo a 10000 ∼ 30000 10000 \ sim30000 directamente1 0 0 0 0∼Para cada número en 3 0 0 0 0 , los tres números se extraen directamente a través de la división y el módulo.
Luego juzga si es divisible y da salida a este número si es divisible.
Recuerde emitir si no se satisface ningún número NO
.
La especialidad de la longevidad es la producción -1
, que es diferente a la de Luogu.
Código
#include<cstdio>
using namespace std;
int k;
bool yes;
int read() {
int re = 0, zf = 1;
char c = getchar();
while (c < '0' || c > '9') {
if (c == '-') zf = -zf;
c = getchar();
}
while (c >= '0' && c <= '9') {
re = (re << 3) + (re << 1) + c - '0';
c = getchar();
}
return re * zf;
}
void write(int now) {
if (now < 0) {
printf("-");
write(-now);
return ;
}
if (now > 9) write(now / 10);
putchar(now % 10 + '0');
}
int main() {
// freopen("num.in", "r", stdin);
// freopen("num.out", "w", stdout);
k = read();
for (int i = 10000; i <= 30000; i++) {
int sub1 = i / 100;
int sub2 = i % 10000 / 10;
int sub3 = i % 1000;
if (sub1 % k == 0 && sub2 % k == 0 && sub3 % k == 0) {
yes = 1;
write(i);
putchar('\n');
}
}
// if (!yes) write(-1);
if (!yes) {
putchar('N');
putchar('o');
}
fclose(stdin);
fclose(stdout);
return 0;
}