| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3775 人关注过本帖
标题:[讨论]]第十一期编程题目(题目很简单,大家一起来做了)
只看楼主 加入收藏
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 

没料到答案出的这么快


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-04-13 10:12
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
下次搞个难的

雁无留踪之意,水无取影之心
2007-04-13 11:07
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用PcrazyC在2007-4-13 11:07:18的发言:
下次搞个难的

那你得夺得出题权


倚天照海花无数,流水高山心自知。
2007-04-13 11:10
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
以下是引用moonwalker在2007-4-13 0:14:39的发言:

这次题目果然简单,第一题几分钟就可以搞定,明天回来再做第二题
#include "stdio.h"
main()
{
long x,y,m,n,L;
long a,b;
int i=0,flag=0;
int Judge(long x,long y,long m,long n,long L);
do{
printf("Input x,y,m,n,L:\n");
scanf("%ld,%ld,%ld,%ld,%ld",&x,&y,&m,&n,&L);
}while(Judge(x,y,m,n,L)==0);
a=x;
b=y;
while(flag==0)
{
i++;
a=(a+m)%L;
b=(b+n)%L;
if(a==b)
flag=1;
if(a==x && b==y)
flag=2;
}
if(flag==1)
printf("The times is %d\n",i);
else if(flag==2)
printf("Impossible!\n");
}
int Judge(long x,long y,long m,long n,long L)/*首先没有必要检查数据是否合法,测试数据都是合法的*/
{
int r=1;
if(x==y)
{
printf("Two frogs are not at a place!(x!=y) Another input please!\n");
r=0;
}
else if(x>=2000000000 || y>=2000000000 || m>=2000000000 || n>=2000000000)
{
printf("Invalid input! Another input please!\n");
r=0;
}
else if(x<=0 || y<=0 || m<=0 || n<=0)
{
printf("Invalid input! Another input please!\n");
r=0;
}
else if(L<=0 || L>=2100000000)
{
printf("Invalid input! Another input please!\n");
r=0;
}
else if(x>L || y>L)
{
printf("Invalid input! Another input please!\n");
r=0;
}
return r;
}

其次在测试数据分别是:15 20 30 14 30的时候没有出现答案
正确答案应该是 不可能

再改一改

2007-04-13 12:08
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
以下是引用yu_hua在2007-4-13 8:40:54的发言:
#include <stdio.h>
long gcd(long u,long v)
{
return v?gcd(v,u%v):u;/*大公约*/
}
long lcm(long u,long v)
{
return u/gcd(u,v)*v;/*小公倍*/
}
main()
{
long x,y,m,n,L,step=0;
printf("Input x,y,m,n,L:\n");
scanf("%ld,%ld,%ld,%ld,%ld",&x,&y,&m,&n,&L);
/*如果m,n的小公倍是L的约数或L的倍数就意味着无解*/
if(L%lcm(m,n)==0||lcm(m,n)%L==0)
printf("Impossible!\n");
else
while(++step)
{
x=(x+m)%L;
y=(y+n)%L;
if(x==y)break;
}
printf("%ld\n",step);
}
你的程序在判断不定方程是否有解的时候在理论上没有什么错误.但是下面的数据你出错了
1 7 16 1 9,你的结果是不可能,正确答案应该是1;
你找找是哪个地方出错了.
还有就是在解方程的时候你的算法效率不是很高如果step的结果很大的话你要做的循环很多.估计1s不够
等我找到这样的数据在让你测试 一下


2007-04-13 12:33
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
以下是引用nuciewth在2007-4-13 11:10:26的发言:

那你得夺得出题权

出题权怎么夺?


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-13 13:02
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
以下是引用I喜欢c在2007-4-12 23:15:43的发言:

找一些对底沉硬件操作的....

我自己都不会.


2007-04-13 13:08
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
以下是引用crackerwang在2007-4-13 12:08:37的发言:

看来我是把这题想简单了,难点还是在如何判断不能见面的情况,还得好好想想!

9楼的哥们:/*如果m,n的小公倍是L的约数或L的倍数就意味着无解*/ 能解释一下么?


如果m=n,也是无解,可是这时m或n不一定是L的约数啊!

[此贴子已经被作者于2007-4-13 20:10:52编辑过]


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-04-13 20:09
zzzkkk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-4-6
收藏
得分:0 

出的这么快,我还得看看


学好C语言,java
2007-04-13 20:19
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
以下是引用moonwalker在2007-4-13 20:09:11的发言:

看来我是把这题想简单了,难点还是在如何判断不能见面的情况,还得好好想想!

9楼的哥们:/*如果m,n的小公倍是L的约数或L的倍数就意味着无解*/ 能解释一下么?


如果m=n,也是无解,可是这时m或n不一定是L的约数啊!
上次称球的时候,你用信息论论证能否称出来。现在还佩服呢。你应该是学数学的吧。

我提示一下.对于不定方程m*x+n*y=l(x,y是未知的,其他是以知)如果gcd(m.n)不能整除l,就无解.离散数学上的

当然这个题目还有其他的判断方法.


第二个题目怎么没有人做啊?
是不是太简单了?

[此贴子已经被作者于2007-4-13 21:14:19编辑过]


2007-04-13 21:06
快速回复:[讨论]]第十一期编程题目(题目很简单,大家一起来做了)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016711 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved