Pagini recente » Cod sursa (job #2667947) | Cod sursa (job #71004) | Cod sursa (job #3003800) | Cod sursa (job #939166) | Cod sursa (job #109419)
Cod sursa(job #109419)
#include<stdio.h>
#include<stdlib.h>
double p;
long sol[32];
void afisare(long a)
{
printf("%ld\n",a-1);
for(long i=a-1;i>=1;i--)
printf("%ld ",sol[i]);
printf("\n");
exit(0);
}
double abs2(double a)
{
if(a<0) return -a;
return a;
}
int ver(double a,double b)
{
if (abs2(a-b)< 0.0000000000001) return 1;
return 0;
}
void cauta(double a,long b,long c)
{
long q;
if(ver(a,0))
{
afisare(b);
}
if(b>20) return ;
if(a>=1) p = 1;
else p = 1/a;
q = p;
if(ver(q,p)==0) q++;
double r = a/(20-b);
r = 1/r;r++;
if(r>100000) r = 100000;
if(q<=c) q = c+1;
for(;q<=r;q++)
{
sol[b] = q;
cauta(a-(double)1/q,b+1,q);
}
}
int main()
{
long n,m;
freopen("1541.in","r",stdin);
scanf("%ld %ld",&n,&m);
cauta((double)(n)/m,1,0);
return 0;
}