Сегодня Али в местном магазине сделал покупку за C тенге. Он только хотел расплатится и...

0 голосов
73 просмотров

Сегодня Али в местном магазине сделал покупку за C тенге. Он только хотел расплатится и услышал от продавца фразу "Без сдачи пожалуйста, молодой человек". У него есть всего N монет достоинств a1, a2, ..., aN тенге.
Определите, сможет ли он расплатится без сдачи.


Информатика (12 баллов) | 73 просмотров
Дано ответов: 2
0 голосов

.............................

(18 баллов)
0

#include
using namespace std;
bool f;
int a[10001],c,n;
int tekser(int,int);
int main()
{
ifstream fin("F.in");
ofstream fout("F.out");
fin>>c>>n;
for(int i=1;i<=n;i++)<br> fin>>a[i];
tekser(1,c);
if(f==true)
fout<<"YES";<br> else
fout<<"NO";<br> fin.close();
fout.close();
return 0;
}

0

int tekser(int i,int sum){
if(sum==0)
f=true;
else {
for(int j=i;j if(sum>0)
tekser(j,sum-a[j]);
else if(sum<0)<br> break;
}
}
}

0

с++

0

первая обычная а вторая рекурсию

0 голосов

Var input,output:text; n,i,j,g,nm,ans,t:integer;ara:array[0..1000] of integer;ar,arq:array[0..1000] of integer; ts,sum,a:integer;beginassign(input,'f.in');reset(input); assign(output,'f.out');rewrite(output);readln(input,a,n);ans:=10000;
for i:=1 to n do beginread(input,ar[i]);ts:=ts+2*ar[i];end;
  if ts  begin

ara[1]:=3;for i:=2 to 15 do begin ara[i]:=3*ara[i-1];end;
 for i:=1 to ara[n] do begin if arq[n]<2 then begin  inc(arq[n]);sum:=sum+ar[n];inc(nm);  end else  begin   g:=n;while arq[g]>1 do begin sum:=sum-ar[g]*arq[g];dec(nm,arq[g]);arq[g]:=0;dec(g);end;
 inc(arq[g]);sum:=sum+ar[g];inc(nm);end;if sum=a then begin if nm if ans>1000 then writeln(output,'0') else writeln(output,ans);   end;
close(output);close(input);end.

(68 баллов)