Сколько существует троек положительных целых чисел (a,b, c) таких, что a+b+c<=S b a*b*c<=P? вводятся числа S P. программирование на питон. Пример если числа 5 и 2
то результат 4 (Все подходящие тройки (1,1,1), (1,1,2), (1,2,1), (2,1,1).)
Ответы на вопрос
Ответ:
a, b = map(int, input().split())
counter = 0
for i in range(1, a + 1):
for j in range(1, a + 1):
for k in range(1, a + 1):
if i + j + k <= a and i * j * k <= b:
counter += 1
print(counter)
Объяснение:
код правильный, но медленный
Ответ:
#include <iostream>
using namespace std;
int main()
{
long long p;
int s, k = 0;
cin >> s >> p;
for(int a = 1; a <= s, a <= p; a++){
for(int b = 1; b <= s, b <= p; b++){
for(int c = 1; c <= s, c <= p; c++){
if(a + b + c <= s && a*b*c <= p) k++;
}
}
} cout << k;
}
Объяснение
на с++, так же медленный. если есть кто решил, можете подсказать? интересно самому.
#include
#include
#include
#include
using namespace std;
int main(){
long long S, P, count = 0;
cin >> S >> P;
for(int i = 1; i <= S; i++){
for(int j = 1; j <= S; j++){
if(P / (i * j) > 0 && S - (i + j) > 0){
if(S - (i + j) > P / (i * j)){
count += (P / (i * j));
}
else{
count += (S - (i + j));
}
}
}
}
cout << count;
}