Нужно развернуть боковую поверхность цилиндра на плоскость. получится прямоугольник. одна сторона которого равно высоте цилиндра, а вторая длине окружности цилиндра, т.е. 2*пи*радиус.
Язык не указан, Default-Language это C. На нём и напишу. 1. #include <stdio.h> int main() { int n; scanf("%d", &n); if (n % 10 == 4 || n % 10 == 7 || n / 10 == 4 || n / 10 == 7) printf("YES\n"); else printf("NO\n"); return 0; } Для порядку скажу что на Perl это можно реализовать проще. #!perl %h { 4 => 0, 7 => 0}; <>; if (exists $h{$_%10} || exists $h{$_/10}) { print "YES\n"; else { print "NO\n"; } Но мы ушли от темы. Итак, 2. Тут всё ещё проще: #include <stdio.h> int main() { int n; scanf("%d", &n); if (!(n % 3)) printf("Multiple of 3\n"); else printf("Not multiple of 3\n"); if (n % 10 == 3) printf("Ends by 3\n"); else printf("Not ends by 3\n"); return 0; } Тут более простой реализации на другом известном мне языке нету, так что приводить дополнительно ничего не буду.
Program ZAD00; {} uses crt; var a,b:array[1..20] of real; i:integer; mina,minb,s:real; Begin { заполнение массива А} for i:=1 to 7 do begin write('введите элементы a[',i,']='); read(a[i]); end; { заполнение массива B} for i:=1 to 9 do begin write('введите элементы b[',i,']='); read(b[i]); end; { min в массиве А} mina:=a[1]; for i:=1 to 7 do begin a[8]:= 32767 ; if (a[i]>= a[i+1]) and (a[i+1]<=mina) then mina:=a[i+1] end; { min в массиве B} minb:=b[1]; for i:=1 to 9 do begin b[10]:=32767; if (b[i]>= b[i+1]) and (b[i+1]<=minb) then minb:=b[i+1] end; { сложение minA и minB} s:=mina+minb; { вывод результатов на экран for i:=1 to 7 do begin write(a[i],' '); writeln; end; for i:=1 to 9 do begin write(b[i],' '); writeln; end; writeln('minA=',mina); writeln('minB=',minb); writeln('сумма их s=', s); End.