|
发表于 2009-11-6 01:13:08
|
显示全部楼层
IP:江苏扬州
以下是引用leeco在2007-5-15 20:47:49的发言:
程序代码:
#include <iostream>
#include <algorithm>
using namespace std;
int gcd(int a,int b)
{
int r;
while(r=a%b){
a=b;
b=r;
}
return b;
}
int lcm(int a,int b)
{
return a/gcd(a,b)*b;
}
int main()
{
int a,b,p,q,l;
while(scanf("%d %d",&p,&q)!=EOF){
if(p>q){
swap(p,q);
}
l=lcm(p,q);
a=l/p;
b=l/q;
printf("把蛋糕切分成%d块\n",(a-b+1)*p);
if(q==l){
printf("大小分别为%d个%d分之1\n",(a-b+1)*p,l);
}
else {
printf("大小分别为%d个%d分之1 和 %d个%d分之1\n",p,q,(a-b)*p,l);
}
}
}
刚刚研究了一下,发现你和我的代码都有点问题~~~
比如4,7,
你要切4个1/7和12个1/28,一共16次
但其实可以切成
4个1/7,4个1/14,4个1/28,这样只要切12次 |
|