Pagini recente » Cod sursa (job #870912) | Cod sursa (job #2437064) | Cod sursa (job #2057754) | Cod sursa (job #1833338) | Cod sursa (job #91837)
Cod sursa(job #91837)
//se da un sir care repr val a m monede si pt fiecare moneda se mai da si numarul de monede de cate sunt
//sa se afiseza toate modalitatile de plata a unei sume S folosindu-se monedele date;
#include <stdio.h>
#include<math.h>
long a[100],st[100],b[100],n,S,nr,c,min=10012,final[100];
void citire(){
freopen("shop.in","r",stdin);
scanf ("%ld",&n);
scanf ("%ld",&c);
scanf ("%ld",&S);
for (int i=0;i<n;i++) {
scanf ("%ld",&a[i]);
scanf ("%ld",&b[i]);
a[i]=pow(c,a[i]);}
}
void afisare(){
long S=0;
for (int i=0;i<n;i++)
S+=st[i];
if (S<min){
min=S;
for (int i=0;i<n;i++)
final[i]=st[i];}
}
void back(int k)
{
if (k==n)
{
if (S==nr)
afisare();
return;
}
for (int v=0;v<=b[k];v++)
if (nr+a[k]*v<=S)
{
st[k]=v;
nr+=a[k]*v;
back(k+1);
nr-=a[k]*v;
}
}
int main(){
citire();
freopen("shop.out","w",stdout);
back(0);
printf("%ld",min);
printf("\n");
for (int i=0;i<n;i++) {
printf("%ld",final[i]);
printf(" ");
}
fclose(stdout);
return 0;
}