-
问题内容:浙江大学ACM题库2705
- 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=4660694
- 所属论坛:数据结构与算法
审核组:其他
- 提问者:languagec
解决者:mathe
- 感谢:mathe
- 关键字:专题开发/技术/项目 数据结构与算法 count int long f1 f2 part1 part2 f0 maxcount num1
- 答案:
http://acm.zju.edu.cn/show_problem.php?pid=2705
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
int Exec(int num,int extra)
{
int end=num/2;
int part1,part2;
int temp,count;
int maxcount=0;
for(int i=ceil(num/3);i<=end;i++)
{
part1=i;
part2=num-part1;
count=0;
while(part1!=part2)
{
if(2*part1 <part2)
{
count=0;
break;
}
else
{
count+=part1;
part2=part2-part1;
temp=part2;
part2=part1;
part1=temp;
}
}
if(part1==part2) count+=part1;
maxcount=(maxcount>count?maxcount:count);
}
return maxcount*extra;
}
int main()
{
int m,n;
int num1,num2;
while(scanf("%d%d",&m,&n)!=EOF)
{
num1=Exec(m,n);
num2=Exec(n,m);
printf("%d\n",num1>num2?num1:num2);
}
return 0;
}
---------------------------------------------------------------
int f0,f1,f2;
int max=(m>n)?m:n;
f0=1,f1=1;
do{
f2=f1+f0;
f0=f1;f1=f2;
}while(f2<max);
while(m%f2!=0&&n%f2!=0){
f2=f1;f1=f0;
f0=f2-f1;
}
printf("%lld",(long long)m*n-(long long)m*n/f2);
- 评价:
给朵鲜花(73)
扔个鸡蛋(38)