Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Внимание! Код не делает выборку совпадений значений сторон, но в разной последовательности, например для p=384 варианты {a=96 b=128 c=160} и {a=128 b=96 c=160} считаются абсолютно разными. Поскольку это происходит для всех p без исключения, то решение будет найденное корректно.
Код: Выделить весь код
/*Если p - периметр прямоугольного треугольника со сторонами {a, b, c}, то есть ровно три целочисленных решения для
p = 120:{20, 48, 52}, {24, 45, 51}, {30, 40, 50}
Для какого значения p<1000 число решений максимально?*/
#include <stdio.h>

int main(int argc, char* argv[])
{ 
const int MyLimit = 1000;
int p, a, b, c, i=0, pMaxRes[MyLimit][2];

	for (p=3; p<MyLimit; p++)
	{
		printf("\nCurrent p=%i ",p);
		for (a=1; a<p/2; a++)
			for (b=1; b<p/2; b++)
				for (c=1; c<p/2; c++)
					if (p==(a + b + c) && c*c == (a*a + b*b))
					{
						printf("{a=%i b=%i c=%i} ", a, b, c);
						if (i==0)
						{
							pMaxRes[i][0]=p;
							pMaxRes[i][1]=1;
							i++;
						}
						else
						{
						
							if (p!=pMaxRes[i-1][0])
							{
								pMaxRes[i][0]=p;
								pMaxRes[i][1]=1;
								i++;
							}
							else
								pMaxRes[i-1][1]++;
						}
					}
	}

	for (a=0; a<i; a++)
		printf("\nValid perimeter = %i match %i", pMaxRes[a][0], pMaxRes[a][1]);
	return 0;
}
Результат в виде таблицы

Valid perimeter = 12 match 2
Valid perimeter = 24 match 2
Valid perimeter = 30 match 2
Valid perimeter = 36 match 2
Valid perimeter = 40 match 2
Valid perimeter = 48 match 2
Valid perimeter = 56 match 2
Valid perimeter = 60 match 4
Valid perimeter = 70 match 2
Valid perimeter = 72 match 2
Valid perimeter = 80 match 2
Valid perimeter = 84 match 4
Valid perimeter = 90 match 4
Valid perimeter = 96 match 2
Valid perimeter = 108 match 2
Valid perimeter = 112 match 2
Valid perimeter = 120 match 6
Valid perimeter = 126 match 2
Valid perimeter = 132 match 4
Valid perimeter = 140 match 2
Valid perimeter = 144 match 4
Valid perimeter = 150 match 2
Valid perimeter = 154 match 2
Valid perimeter = 156 match 2
Valid perimeter = 160 match 2
Valid perimeter = 168 match 6
Valid perimeter = 176 match 2
Valid perimeter = 180 match 6
Valid perimeter = 182 match 2
Valid perimeter = 192 match 2
Valid perimeter = 198 match 2
Valid perimeter = 200 match 2
Valid perimeter = 204 match 2
Valid perimeter = 208 match 2
Valid perimeter = 210 match 4
Valid perimeter = 216 match 2
Valid perimeter = 220 match 2
Valid perimeter = 224 match 2
Valid perimeter = 228 match 2
Valid perimeter = 234 match 2
Valid perimeter = 240 match 8
Valid perimeter = 252 match 6
Valid perimeter = 260 match 2
Valid perimeter = 264 match 4
Valid perimeter = 270 match 4
Valid perimeter = 276 match 2
Valid perimeter = 280 match 6
Valid perimeter = 286 match 2
Valid perimeter = 288 match 4
Valid perimeter = 300 match 4
Valid perimeter = 306 match 2
Valid perimeter = 308 match 2
Valid perimeter = 312 match 4
Valid perimeter = 320 match 2
Valid perimeter = 324 match 2
Valid perimeter = 330 match 4
Valid perimeter = 336 match 6
Valid perimeter = 340 match 2
Valid perimeter = 348 match 2
Valid perimeter = 350 match 2
Valid perimeter = 352 match 2
Valid perimeter = 360 match 8
Valid perimeter = 364 match 2
Valid perimeter = 372 match 2
Valid perimeter = 374 match 2
Valid perimeter = 378 match 2
Valid perimeter = 380 match 2
Valid perimeter = 384 match 2
Valid perimeter = 390 match 4
Valid perimeter = 392 match 2
Valid perimeter = 396 match 6
Valid perimeter = 400 match 2
Valid perimeter = 408 match 4
Valid perimeter = 416 match 2
Valid perimeter = 418 match 2
Valid perimeter = 420 match 10
Valid perimeter = 432 match 4
Valid perimeter = 440 match 4
Valid perimeter = 442 match 2
Valid perimeter = 444 match 2
Valid perimeter = 448 match 2
Valid perimeter = 450 match 4
Valid perimeter = 456 match 4
Valid perimeter = 462 match 4
Valid perimeter = 468 match 4
Valid perimeter = 476 match 2
Valid perimeter = 480 match 8
Valid perimeter = 490 match 2
Valid perimeter = 492 match 2
Valid perimeter = 494 match 2
Valid perimeter = 504 match 8
Valid perimeter = 510 match 4
Valid perimeter = 516 match 2
Valid perimeter = 520 match 4
Valid perimeter = 528 match 6
Valid perimeter = 532 match 2
Valid perimeter = 540 match 6
Valid perimeter = 544 match 2
Valid perimeter = 546 match 4
Valid perimeter = 552 match 4
Valid perimeter = 560 match 6
Valid perimeter = 564 match 2
Valid perimeter = 570 match 4
Valid perimeter = 572 match 2
Valid perimeter = 576 match 4
Valid perimeter = 588 match 4
Valid perimeter = 594 match 2
Valid perimeter = 598 match 2
Valid perimeter = 600 match 6
Valid perimeter = 608 match 2
Valid perimeter = 612 match 4
Valid perimeter = 616 match 4
Valid perimeter = 624 match 6
Valid perimeter = 630 match 8
Valid perimeter = 636 match 2
Valid perimeter = 640 match 2
Valid perimeter = 644 match 2
Valid perimeter = 646 match 2
Valid perimeter = 648 match 2
Valid perimeter = 650 match 2
Valid perimeter = 660 match 10
Valid perimeter = 672 match 8
Valid perimeter = 680 match 4
Valid perimeter = 684 match 4
Valid perimeter = 690 match 4
Valid perimeter = 696 match 2
Valid perimeter = 700 match 4
Valid perimeter = 702 match 2
Valid perimeter = 704 match 2
Valid perimeter = 708 match 2
Valid perimeter = 714 match 2
Valid perimeter = 720 match 12
Valid perimeter = 728 match 4
Valid perimeter = 732 match 2
Valid perimeter = 736 match 2
Valid perimeter = 744 match 2
Valid perimeter = 748 match 2
Valid perimeter = 750 match 2
Valid perimeter = 756 match 8
Valid perimeter = 760 match 4
Valid perimeter = 768 match 2
Valid perimeter = 770 match 4
Valid perimeter = 780 match 8
Valid perimeter = 782 match 2
Valid perimeter = 784 match 2
Valid perimeter = 792 match 6
Valid perimeter = 798 match 2
Valid perimeter = 800 match 4
Valid perimeter = 804 match 2
Valid perimeter = 810 match 4
Valid perimeter = 816 match 4
Valid perimeter = 828 match 4
Valid perimeter = 832 match 2
Valid perimeter = 836 match 2
Valid perimeter = 840 match 16
Valid perimeter = 850 match 2
Valid perimeter = 852 match 2
Valid perimeter = 858 match 2
Valid perimeter = 864 match 6
Valid perimeter = 870 match 4
Valid perimeter = 874 match 2
Valid perimeter = 876 match 2
Valid perimeter = 880 match 6
Valid perimeter = 882 match 2
Valid perimeter = 884 match 2
Valid perimeter = 888 match 2
Valid perimeter = 896 match 2
Valid perimeter = 900 match 8
Valid perimeter = 910 match 4
Valid perimeter = 912 match 4
Valid perimeter = 918 match 4
Valid perimeter = 920 match 4
Valid perimeter = 924 match 10
Valid perimeter = 928 match 2
Valid perimeter = 930 match 2
Valid perimeter = 936 match 6
Valid perimeter = 948 match 2
Valid perimeter = 950 match 2
Valid perimeter = 952 match 4
Valid perimeter = 960 match 8
Valid perimeter = 966 match 2
Valid perimeter = 972 match 2
Valid perimeter = 980 match 2
Valid perimeter = 984 match 2
Valid perimeter = 986 match 2
Valid perimeter = 988 match 2
Valid perimeter = 990 match 8
Valid perimeter = 992 match 2
Valid perimeter = 992 match 2
Valid perimeter = 996 match 2
для анализа оператором ПК и принятии решения про ответ.

Как видно из таблицы Valid perimeter = 840 match 16 - ответ, то есть 840 максимальный целочисленный периметр, меньший за 1000, прямоугольного треугольника, при котором число решений максимально и составляет 16, с учётом того что треугольник можно разворачивать.

Если нужен результат чётко, то нужно поработать с двухмерным массивом pMaxRes[][]: отсортировать/найти наибольший элемент во втором ряде и вывести соответствующиё значение с первого.

Последний раз редактировалось Admiral, 27-11-2008 в 02:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:06, 27-11-2008 | #6