s1nedesports
21.10.2022 23:24

Python интересная задачка :) надеюсь найдется кто шарит
вот задача https://acmp.ru/index.asp?main=task&id_task=250
вот код:
n = int(input())
x = n
z = n
a1 = 0
b1 = 0
s = 0
a = 0
b = 0
if len(set(list(str(n > 2:
for i in range(n):
a1 = b1 +1
x = x + 1
s = str(x)
l2 = set(list(s))
if len(l2) <= 2:
a = x
break
for i in range(n):
b1 = b1 +1
z = z - 1
y = str(z)
w2 = set(list(y))
if len(w2) <= 2:
b = z
break
if a1 == b1:
print(min(a,b))
elif a1 >> b1:
print(b)
elif b1 >> a1:
print(a)
else:
print(n)

валится на 10-м тесте, в чем проблема?

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Adik20061
07.01.2021 04:33
Если число 49 записывается как 121, значит первый остаток от деления равен 1, то есть основанием системы счисления является число, кратное 48.

121 имеет 3 разряда, значит основание однозначно меньше 10 и больше 2. Подходят 3, 4, 6, 8.

Учитывая, что в числе 121 три разряда, значит число 48 делилось всего три раза. 
Число 8 не подойдет, т.к. 48/8=6, значит будет всего два деления.
Число 3 не подойдет, т.к. 48/3 = 16, 16/3=5 - то есть тут будет больше трёх знаков.
Число 4 не подойдет, т.к. 48/4=12, а 12 делится на 4 без остатка, но, судя по числу, во втором делении остаток должен быть равен 2.
Остаётся число 6. Проверим

49/6=8 |1
8/6 = 1 |2
1/6=0 |1

121(6)
0,0(0 оценок)
Ответ:
beka9867
15.08.2021 07:34
Язык не указан, Default-Language это C. На нём и напишу.
1.
#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    if (n % 10 == 4 || n % 10 == 7 || n / 10 == 4 || n / 10 == 7)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}
Для порядку скажу что на Perl это можно реализовать проще.
#!perl
%h { 4 => 0, 7 => 0};
<>;
if (exists $h{$_%10} || exists $h{$_/10}) {
    print "YES\n";
else {
    print "NO\n";
}
Но мы ушли от темы. Итак, 2. Тут всё ещё проще:
#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    if (!(n % 3))
        printf("Multiple of 3\n");
    else
        printf("Not multiple of 3\n");
    if (n % 10 == 3)
        printf("Ends by 3\n");
    else
        printf("Not ends by 3\n");
    return 0;
}
Тут более простой реализации на другом известном мне языке нету, так что приводить дополнительно ничего не буду.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота