#include<stdlib.h>
#include<stdio.h>
int Recurs(int,int);
int Enumeration(int);
int types [5]={0,1,2,5,10};
int main(){
int number;
printf("Рекурентный алгоритм: %d/n", Recurs
(number
,4)); printf("Перебор: %d/n", Enumeration
(number
)); return 0;
}
int Recurs(int s, int b){
if(types[b]==1)return 1;
else if(s>types[b])return (Recurs(s,b-1)+Recurs(s-types[b],b));
else if(s==types[b])return(Recurs(s,b-1)+1);
else return Recurs(s,b-1);
}
int Enumeration(int s)
{
int count=0;
for(int a=0; a<=s;a++)
for(int b=0; b<=s;b++)
for(int c=0; c<=s;c++)
for(int d=0; d<=s;d++)
if(d*1 + c*2 + b*5 + a*10 == s) count++;
return count;
}
I2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0ZGlvLmg+CiAgICAgIGludCBSZWN1cnMoaW50LGludCk7CiAgICAgIGludCBFbnVtZXJhdGlvbihpbnQpOwogICAgICBpbnQgdHlwZXMgWzVdPXswLDEsMiw1LDEwfTsKaW50IG1haW4oKXsKICAgICBpbnQgbnVtYmVyOwogICAgIHByaW50Zigi0JLQstC10LTQuNGC0LUg0YfQuNGB0LvQvjoiKTsKICAgICBzY2FuZigiJWQiLCZudW1iZXIpOwogICAgIAogICAgIHByaW50Zigi0KDQtdC60YPRgNC10L3RgtC90YvQuSDQsNC70LPQvtGA0LjRgtC8OiAlZC9uIiwgUmVjdXJzKG51bWJlciw0KSk7CiAgICAgcHJpbnRmKCLQn9C10YDQtdCx0L7RgDogJWQvbiIsIEVudW1lcmF0aW9uKG51bWJlcikpOwogICAgIHJldHVybiAwOwp9CmludCBSZWN1cnMoaW50IHMsIGludCBiKXsKICAgICAgICBpZih0eXBlc1tiXT09MSlyZXR1cm4gMTsKICAgICAgICAgICAgIGVsc2UgaWYocz50eXBlc1tiXSlyZXR1cm4gKFJlY3VycyhzLGItMSkrUmVjdXJzKHMtdHlwZXNbYl0sYikpOwogICAgICAgICAgICAgZWxzZSBpZihzPT10eXBlc1tiXSlyZXR1cm4oUmVjdXJzKHMsYi0xKSsxKTsKICAgICAgICAgICAgIGVsc2UgcmV0dXJuIFJlY3VycyhzLGItMSk7Cn0KaW50IEVudW1lcmF0aW9uKGludCBzKQp7CiAgIGludCBjb3VudD0wOwogICBmb3IoaW50IGE9MDsgYTw9czthKyspCiAgIGZvcihpbnQgYj0wOyBiPD1zO2IrKykKICAgZm9yKGludCBjPTA7IGM8PXM7YysrKQogICBmb3IoaW50IGQ9MDsgZDw9cztkKyspCiAgIGlmKGQqMSArIGMqMiArIGIqNSArIGEqMTAgPT0gcykgY291bnQrKzsKICAgcmV0dXJuIGNvdW50Owp9Cg==