Решить на языке программирования golang(или просто go) : (нужно написать программу)
последовательность состоит из натуральных чисел и завершается числом 0. определите количество элементов этой последовательности, которые равны ее наибольшему элементу.
формат входных данных
вводится непустая последовательность натуральных чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).
формат выходных данных
выведите ответ на .
пример данных:
1
3
3
1
0
получается 2 (т.к. у нас два наибольших элемента .(две тройки) )
или хотя бы поправьте моё решение(у меня почему-то выдает 1 вместо 2) :
package main
import "fmt"
func main() {
var a,n,i,maxi int
maxi=0
n=0
for i! =0{
if a> maxi {
maxi=a
n=1
} else if a==maxi {
n+=1
}
fmt.scan(& a)
}
fmt.println(n)
}
1) 89₁₀ = 1011001₂
2) 600₁₀ = 100101100₂
3) 2010₁₀ = 11111011010₂
1) 513₁₀ = 1001₈
2) 600₁₀ = 1130₈
3) 2010₁₀ = 3732₈
Объяснение:
1)
89 / 2 = 44 + остаток 1
44 / 2 = 22 + остаток 0
22 / 2 = 11 + остаток 0
11 / 2 = 5 + остаток 1
5 / 2 = 2 + остаток 1
2 / 2 = 1 + остаток 0
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
89₁₀ = 1011001₂
2)
600 / 2 = 300 + остаток 0
300 / 2 = 150 + остаток 0
150 / 2 = 75 + остаток 0
75 / 2 = 37 + остаток 1
37 / 2 = 18 + остаток 1
18 / 2 = 9 + остаток 0
9 / 2 = 4 + остаток 1
4 / 2 = 2 + остаток 0
2 / 2 = 1 + остаток 0
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
600₁₀ = 100101100₂
3)
2010 / 2 = 1005 + остаток 0
1005 / 2 = 502 + остаток 1
502 / 2 = 251 + остаток 0
251 / 2 = 125 + остаток 1
125 / 2 = 62 + остаток 1
62 / 2 = 31 + остаток 0
31 / 2 = 15 + остаток 1
15 / 2 = 7 + остаток 1
7 / 2 = 3 + остаток 1
3 / 2 = 1 + остаток 1
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
2010₁₀ = 11111011010₂
1)
513 / 8 = 64 + остаток 1
64 / 8 = 8 + остаток 0
8 / 8 = 1 + остаток 0
1 / 8 = 0 + остаток 1
записываем остатки снизу вверх
513₁₀ = 1001₈
2)
600 / 8 = 75 + остаток 0
75 / 8 = 9 + остаток 3
9 / 8 = 1 + остаток 1
1 / 8 = 0 + остаток 1
записываем остатки снизу вверх
600₁₀ = 1130₈
3)
2010 / 8 = 251 + остаток 2
251 / 8 = 31 + остаток 3
31 / 8 = 3 + остаток 7
3 / 8 = 0 + остаток 3
записываем остатки снизу вверх
2010₁₀ = 3732₈
Program A1;
var a:array[1..30] of integer;
amax,amin,i,imin,imax,n,s:integer;
begin
writeln('введите n элементов массива');
readln(n);
for i:=1 to n do a[i]:=random(30);
writeln('введённый массив имеет вид');
for i:=1 to n do write(a[i], ' ');
writeln;
amax:=a[1]; imiax:=1;
for i:=2 to n do
if a[i]>amax then begin amax:=a[i]; imax:=i; end;
amin:=a[1]; imin:=1;
for i:=2 to n do
if a[i]<amin then begin amin:=a[i]; imin:=i; end;
writeln('полученный массив имеет вид');
s:=a[imin];
a[imin]:=a[imax];
a[imax]:=s;
for i:=1 to n do
writeln(a[i],' ');
end.