Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Nadin9724
0 / 0 / 2
Регистрация: 31.10.2015
Сообщений: 14
1

Получить наибольшую из длин отрезков последовательности, удовлетворяющих заданному условию

15.11.2015, 00:33. Просмотров 277. Ответов 2
Метки нет (Все метки)

Доброго времени суток)
Пожалуйста, помогите с задачей.
Задано натуральное n, целые числа a1,a2,...,an. Рассмотреть отрезки последовательности a1,a2,...,an (подпоследовательности элементов, которые идут подряд), которые состоят из
1)полных квадратов
2)степеней натурального m
3)простых чисел
В каждом случае получить наибольшее из длин отрезков, которые рассматриваются.
У меня уже есть наработки, но программа не запускается.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# include <stdio.h>
int square(int n)
{if (n==1) return 1;
int flag=0;
for(int i=2;i<n;)
if (n%i==0){flag=1;
if ((n/i)%i==0) n/=(i*i);
else return 0;
}
else ++i;
if (flag==1) return 1;
else return 0;
}
int step(int y, int x)
{if (x==0) return 1;
else if (x>0) return x*step(y,x-1);
else return step(x, y+1)/x;
}
int prost(int a)
{int n;
for(int i=2;i*i<=n;i++)
if (n%i==0) return 0;
return 1;
}
int MaxPosl(int b[10], int n, int max)
{int i, k; signed int st;
st=-1; max=0;
for(i=2;i<=n+1;)
{if ((b[i]==1) && (b[i-1]==1)) {if (st<0) st=i-1;}
else
if (st>0) {k=i-st; if (k>max) max=k; st=-1;}
}
}
main()
{int a[10], b[10], n, i, max, m;
printf("Vvedite n=\n");
scanf("%i", &n);
printf("Vvedite ishodnij massiv\n");
for(i=0;i<n;i++)
{scanf("%i", &a[i]);}
printf("Ishodnij massiv\n");
for(i=0;i<n;i++)
printf("%5i", &a[i]);
printf("Max psledovatelnost polnyh kwadratow\n");
for(i=1;i<=n;i++)
b[i]=square(a[i]);
MaxPosl(b, n, max);
printf("max=%i", max);
printf("Max posledovatelnost stepenej\n");
printf("Vvedite m=\n");
scanf("%i", m);
for(i=1;i<=n;i++)
b[i]=step(a[i], m);
MaxPosl(b, n, max);
printf("max=%i", max);
printf("Max posledovatelnost prostih chisel\n");
for(i=1;i<=n;i++)
b[i]=prost(a[i]);
MaxPosl(b, n, max);
printf("max=%i", max);
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2015, 00:33
Ответы с готовыми решениями:

Рассмотреть отрезки, идущих подряд членов последовательности, состоящие из полных квадратов. Получить наибольшую из длин рассматриваемых отрезков
Даны натуральное число n, целые числа a_1 ,…,a_n. Рассмотреть отрезки идущих подряд членов данной...

Найти сумму компонент вектора X, удовлетворяющих заданному условию
Найти сумму компонент вектора X, удовлетворяющих условию 2&lt;Xi&lt;5. Дано, что X=(2.07, 4.02, 8, 1,...

Определить количество членов последовательности удовлетворяющих условию
Даны натуральные числа: n,a1,...,an.Определить количества членов ak последовательности a1,...,an:...

Определить количество членов последовательности, удовлетворяющих условию
Дано натуральное число n и а1, а2,..., аn. Определить количество членов последовательности,...

Найти количество положительных элементов последовательности, удовлетворяющих условию
Здравствуйте. Подскажите, пожалуйста, как написать код для решения вот такого задания: Дана...

2
Max00766
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 246
19.11.2015, 20:08 2
Nadin9724, Здравствуйте, у Вас есть этот код в рабочем виде?
0
Nadin9724
0 / 0 / 2
Регистрация: 31.10.2015
Сообщений: 14
19.11.2015, 21:55  [ТС] 3
Max00766, уже есть.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# include <stdio.h>
int Square(int n)
{if (n==1) return 1;
int flag=0;
for(int i=2;i<n;)
if (n%i==0) {flag=1;
if ((n/i)%i==0) n/=(i*i);
else return 0;}
else ++i;
if (flag==1) return 1;
else return 0;
}
int Step(int n, int x)
{do
{if (n%x==0) n/=x;
else return 0;} 
while (n>1);
return 1;
}
int Simple(int n)
{for(int i=2;i<=n/2;i++)
if (n%i==0) return 0;
return 1;
}
int main()
{int a[100], i, n, length, maxlength, m;
printf("Vvedite n=");
scanf("%i", &n);
printf("Vvedite posledovatelnost\n");
for(i=0;i<n;i++)
{scanf("%i", &a[i]);}
printf("\nPosledovatelnost\n");
for(i=0;i<n;i++)
printf("%5i", a[i]);
printf("\nMax posledovatelnost polnih kwadratow\n");
maxlength=0;
for(i=0;i<n;i++)
{length=0;
while (Square(a[i]))
{length++;
i++;
}
if (length>maxlength) maxlength=length;
}
printf("%i", maxlength);
printf("\nMax posledovatelnost stepenej\n");
printf("Vvedite m=");
scanf("%i", &m);
maxlength=0;
for(i=0;i<n;i++)
{length=0;
while (Step(a[i], m))
{length++;
i++;
}
if (length>maxlength) maxlength=length;
}
printf("%i", maxlength);
printf("\nMax posledovatelnost prostih chisel\n");
maxlength=0;
for(i=0;i<n;i++)
{length=0;
while (Simple(a[i]))
{length++;
i++;
}
if (length>maxlength) maxlength=length;
}
printf("%i", maxlength);
}
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2015, 21:55

Получить сумму элементов массива, удовлетворяющих условию
Дан массив А(10). Получить сумму элементов массива, удовлетворяющих условию |A|&lt;= i*i Вот мой...

Получить наибольшую из длин рассматриваемых отрезков последовательности
Даны натуральное число n, целые числа a1,...,an. Рассмотреть отрезки последовательности a1,...,an...

Получить наибольшую из длин рассматриваемых отрезков
Дано натуральное число n, целые числа a1, ..., an. Рассмотреть отрезки последовательности a1, ...,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.