re等分液体--ACM题目

黄舒颖 咸丫蛋 2009-08-01 04:42:22
不知什么原因,帖子被锁定了,不能回复?

题目意思
对于 100 70 30的情况
1 mov 100(100) 30 to 30(0)
2 mov 100(70) 30 to 30(0)
3 mov 100(40) 30 to 70(0) 至此为止 1个100(10) 1个70(空) 2个30(30) 1个70(30)
4 mov 30(30) 30 to 70(0)
5 mov 30(30) 30 to 70(30)
6 mov 30(30) 10 to 70(60) 至此为止 1个100(10) 1个70(70) 1个70(20)
7 mov 70(70) 70 to 100(10)
8 mov 100(80) 30 to 30(30)
9 mov 30(30) 30 to 70(20) 至此为止 1个100(50) 1个70(50)
...全文
217 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingzhui005 2009-11-30
  • 打赏
  • 举报
回复
Ororz
llwwhh 2009-08-18
  • 打赏
  • 举报
回复
暴强的代码 Orz
expter 2009-08-02
  • 打赏
  • 举报
回复
UPO...................
LeonTown 2009-08-02
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
谢谢,你可以解释一下么?

[Quote=引用 5 楼 baihacker 的回复:]
C/C++ code

本题的来源是:http://acm.fjnu.edu.cn/show?problem_id=1336下面代码已经AC

#include<iostream>usingnamespace std;int gcd(int a,int b){return b? gcd(b, a%b) : a;}int main()
{int cas;scanf("%d",&cas);while ¡­
[/Quote]
baihacker 2009-08-02
  • 打赏
  • 举报
回复


本题的来源是:http://acm.fjnu.edu.cn/show?problem_id=1336
下面代码已经AC

#include <iostream>
using namespace std;

int gcd(int a, int b){return b ? gcd(b, a%b) : a;}

int main()
{
int cas;scanf("%d", &cas);
while (cas--)
{
int l, m, n;scanf("%d%d%d", &l, &m, &n);
int d = gcd(l, m);
d = gcd(d, n);
l /= d;
m /= d;
n /= d;
if ((m+n)&1)puts("no");
else printf("%d\n", n+m-1);
}
return 0;
}
  • 打赏
  • 举报
回复
原题

有三种容器R1,R2,R3,其容积分别是L,M,N。L,M,N 都是正整数且L=M+N。今R1 装满液体,试用最少的操作步骤 将 R1 中的液体均分。

输入

第一行仅包含一个表示测试例个数的正整数n 。以下n 行为 n个测试例的输入数据。每个测试例仅有一行输入数据,含三个正整数L,M,N (1 <=L,M,N <=150),两数间用一个空格隔开。
输出

每个测试例都仅有一行输出,若有解,输出操作的次数,若无解则输出“no”。
输入样例

3
100 70 30
90 60 30
80 45 35

输出

9
no
15
  • 打赏
  • 举报
回复
嗯,我理解错误,
那能不能给一个好点的算法?

[Quote=引用 2 楼 emacsnw 的回复:]
楼主这个解答不对。只有一个100,一个70,一个30.

正确的做法应该是:
(0) 100/100, 0/70, 0/30
(1) 30/100, 70/70, 0/30
(2) 30/100, 40/70, 30/30
(3) 60/100, 40/70, 0/30
(4) 60/100, 10/70, 30/30
(5) 90/100, 10/70, 0/30
(6) 90/100, 0/70, 10/30
(7) 20/100, 70/70, 10/30
(8) 20/100, 50/70, 30/30
(9) 50/100, 50/70, 0/30


[/Quote]
emacsnw 2009-08-01
  • 打赏
  • 举报
回复
楼主这个解答不对。只有一个100,一个70,一个30.

正确的做法应该是:
(0) 100/100, 0/70, 0/30
(1) 30/100, 70/70, 0/30
(2) 30/100, 40/70, 30/30
(3) 60/100, 40/70, 0/30
(4) 60/100, 10/70, 30/30
(5) 90/100, 10/70, 0/30
(6) 90/100, 0/70, 10/30
(7) 20/100, 70/70, 10/30
(8) 20/100, 50/70, 30/30
(9) 50/100, 50/70, 0/30

Dave888Zhou 2009-08-01
  • 打赏
  • 举报
回复
没看懂,能否把问题描述清楚一点(没看原来的贴)。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧