Python Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю четверть. В каких классах учатся эта ученики? Каков их средний ?
В Вашем варианте после while необходимо писать begin, а после Writeln - end. Но само по себе решение некрасивое. Вот Вам еще два на выбор.
1. Без массива
var s,n:integer; begin Write('Введите сумму: '); Read(s); n:=s div 5000; if n>0 then begin Writeln('Банкнот "5000" всего: ',n); s:=s mod 5000 end; n:=s div 1000; if n>0 then begin Writeln('Банкнот "1000" всего: ',n); s:=s mod 1000 end; n:=s div 500; if n>0 then begin Writeln('Банкнот "500" всего: ',n); s:=s mod 500 end; n:=s div 100; if n>0 then begin Writeln('Банкнот "100" всего: ',n); s:=s mod 100 end; n:=s div 50; if n>0 then begin Writeln('Банкнот "50" всего: ',n); s:=s mod 50 end; n:=s div 10; if n>0 then begin Writeln('Банкнот "10" всего: ',n); s:=s mod 10 end; if s>0 then Writeln('Недоплачено: ',s) end.
const k:array[1..6] of integer=(5000,1000,500,100,50,10); var s,n,i:integer; begin Write('Введите сумму: '); Read(s); for i:=1 to 6 do begin n:=s div k[i]; if n>0 then begin Writeln('Банкнот "',k[i],'" всего: ',n); s:=s mod k[i] end end; if s>0 then Writeln('Недоплачено: ',s) end.
Вот Вам еще два на выбор.
1. Без массива
var
s,n:integer;
begin
Write('Введите сумму: '); Read(s);
n:=s div 5000;
if n>0 then begin
Writeln('Банкнот "5000" всего: ',n);
s:=s mod 5000
end;
n:=s div 1000;
if n>0 then begin
Writeln('Банкнот "1000" всего: ',n);
s:=s mod 1000
end;
n:=s div 500;
if n>0 then begin
Writeln('Банкнот "500" всего: ',n);
s:=s mod 500
end;
n:=s div 100;
if n>0 then begin
Writeln('Банкнот "100" всего: ',n);
s:=s mod 100
end;
n:=s div 50;
if n>0 then begin
Writeln('Банкнот "50" всего: ',n);
s:=s mod 50
end;
n:=s div 10;
if n>0 then begin
Writeln('Банкнот "10" всего: ',n);
s:=s mod 10
end;
if s>0 then Writeln('Недоплачено: ',s)
end.
Пример:
Введите сумму: 162504
Банкнот "5000" всего: 32
Банкнот "1000" всего: 2
Банкнот "500" всего: 1
Недоплачено: 4
2. С массивом
const
k:array[1..6] of integer=(5000,1000,500,100,50,10);
var
s,n,i:integer;
begin
Write('Введите сумму: '); Read(s);
for i:=1 to 6 do begin
n:=s div k[i];
if n>0 then begin
Writeln('Банкнот "',k[i],'" всего: ',n);
s:=s mod k[i]
end
end;
if s>0 then Writeln('Недоплачено: ',s)
end.
Пример
Введите сумму: 15470
Банкнот "5000" всего: 3
Банкнот "100" всего: 4
Банкнот "50" всего: 1
Банкнот "10" всего: 2
#include <iostream>
typedef long long ll;
using namespace std;
bool ll_is_valid(ll t, ll N, ll x, ll y)
{
return t / x + (t - x) / y >= N;
}
ll f(ll N, ll x, ll y)
{
ll R = 1;
while (!ll_is_valid(R,N,x,y)) R *= 2;
ll L = R / 2;
while(R - L > 1)
{
ll M = (L + R) / 2;
if (!ll_is_valid(M,N,x,y)) {L = M;}
else {R = M;}
}
return R;
}
int main()
{
ll N,x,y;
cin >> N >> x >> y;
if(x > y) swap( x, y );
cout << f(N, x, y) << std::endl;
}