На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 21
ссылка на сообщение  Отправлено: 07.05.21 20:54. Заголовок: 27- задача 58


Мое решение дает ответ 350, а не 351
from itertools import combinations
f = open('27-58a.txt')
n = int(f.readline())
a = [int(f.readline()) for i in range(n)]
count = 0
for i in range(1,n):
for x in combinations(a,i):
if sum(x)%3== 0:
count += 1
print(count)
Где ошибка?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]





Не зарегистрирован
ссылка на сообщение  Отправлено: 14.05.21 11:31. Заголовок: День добрый. Вы реша..


День добрый. Вы решаете на Питоне ПОЛНЫМ ПЕРЕБОРОМ ВСЕХ ВАРИАНТОВ!!! Для файла 27-58b это точно не пройдет. Решение должно использовать динамическое программирование. Я на Питоне не работаю. Если интересно, то могу выложить решение на СИ++ с подробными комментариями.
[pre2]
#include <iostream>
#include <fstream>

using namespace std;

int main() {
ifstream cin;
cin.open("input_27-58b.txt");
long long int n,i,a,b,k[3],x0,x1,x2;
k[0]=0; k[1]=0; k[2]=0;//kol-vo naborov, ostatok ot delenija ih summ na 3 raven 0, 1, 2
cin>>n;
for (i=0;i<n;i++){
cin>>a;
b=a%3;// b - ostatok ot delenija na 3 vnov postupivshego chisla
if (b==0){
k[0]=2*k[0]+1;//esli b=0, to dobaviv ego ko vsem naboram s takim she ostatkom, my udvoim ih kol-vo plus samo eto chislo
k[1]=k[1]*2;//a esli dobavljat k naboram s ostatkami 1 ili 2, to prosto udvaivaem ih kol-vo
k[2]=k[2]*2;
}
if (b==1){
x1=k[1]+k[0]+1;//esli b=1, to dobaviv ego ko vsem naboram s ostatkom 0, poluchim nabory s ostatkom 1 plus samo eto chislo
x2=k[2]+k[1];//dobaviv ego ko vsem naboram s ostatkom 1, poluchim nabory s ostatkom 2
x0=k[0]+k[2];//dobaviv ego ko vsem naboram s ostatkom 2, poluchim nabory s ostatkom 0
k[0]=x0; k[1]=x1; k[2]=x2;//no chtoby ne "portit' chisla massiva k, vychislenija delaem
} //v peremennye õ0, õ1, õ2, kotorye potom "vernem" v massiv k
if (b==2){
x2=k_s[2]+k_s[0]+1;//esli b=2, to dobaviv ego ko vsem naboram s ostatkom 0, poluchim nabory s ostatkom 2 plus samo eto chislo
x0=k_s[0]+k_s[1];//dobaviv ego ko vsem naboram s ostatkom 1, poluchim nabory s ostatkom 0
x1=k_s[1]+k_s[2];//dobaviv ego ko vsem naboram s ostatkom 2, poluchim nabory s ostatkom 1
k_s[0]=x0; k_s[1]=x1; k_s[2]=x2;
}
}
cout<<k_s[0]<<endl;//otvet v peremennoj, gde oststok 0
}
[/pr2]

Спасибо: 0 
Цитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1572
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет