荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: ACM (ACM), 信区: ACMICPC
标 题: [合集]teacher's nuber 剩余问题与《孙子算法》
发信站: 荔园晨风BBS站 (Wed Mar 31 11:49:28 2004), 站内信件
posidone (海王波赛冬) 于Sat Mar 27 10:04:57 2004提到:
我已经找到此类问题的算法,请看以下网站:
http://www.srsoft.com.cn/study_garden_plot/drkt/drkt/gz_sx/qwsx/0/
算法稍后贴出。
Kenniel (笑翻下先^_^) 于Sat Mar 27 10:24:12 2004提到:
呵呵!当时我就是用这个做了!不过当数
很大的时候就超时,不知道师弟有什么妙法呵呵
selahx (灵犀一指) 于Sat Mar 27 10:38:04 2004提到:
呵呵,好像的确高效很多,但怎样判定无解,还有那题答案有没有上限啊?
kali (江火) 于Sat Mar 27 10:40:20 2004提到:
问题确保有解的!!
呵呵,好像的确高效很多,但怎样判定无解,还有那题答案有没有上限啊?
posidone (海王波赛冬) 于Sat Mar 27 10:41:38 2004提到:
这个算法比起试探法已经优化了很多。
关键的地方,
一个是求最小公倍,另一个就是找乘数ai;
最小公倍是满足结合律的。
只要能求解两个数的最小公倍,就可以求出多个数的最小公倍。
请问:谁有求两数最小公倍的简化算法?请贴一下。
至于ai,是有规律的。
不是死算。
他是观察衍母除m的余数,去计算的。
近一步的算法正在构造中,
肯定可以解出。
posidone (海王波赛冬) 于Sat Mar 27 10:45:28 2004提到:
如果所给数据是无解的,
那谁都没办法。
不过既然题目没说无解的输出要求,
裁判就不会给无解的数据。
justry (乐悠悠) 于Sat Mar 27 10:49:13 2004提到:
调用endid函数可以求公倍数,不过是包含在那个头文件里阿
kaman (天外飞仙) 于Sat Mar 27 10:52:45 2004提到:
无解也应该能判断吧~~~~
6 8 9
1 1 2
8*9%6=0
用孙子定理就不能算出M了~~
kali (江火) 于Sat Mar 27 10:52:57 2004提到:
int Edild(int a,int b)
{
if(b==0) return a;
return Edild(b,a%b);
}
int smallmul(int a,int b)
{
int temp;
if(a<b){
a=temp;
a=b;
b=temp;
}
return(a*b/Edild(a,b));
}
kali (江火) 于Sat Mar 27 10:54:35 2004提到:
题目的意思是m[i]是互质的!!
无解也应该能判断吧~~~~
6 8 9
1 1 2
8*9%6=0
用孙子定理就不能算出M了~~
selahx (灵犀一指) 于Sat Mar 27 11:01:28 2004提到:
那个究竟有没有解啊~~~那么?
kali (江火) 于Sat Mar 27 11:06:33 2004提到:
这里m[i]是6 8 9,这是互质??
像3 7 17 25 26这几个数是一定有解的。
selahx (灵犀一指) 于Sat Mar 27 11:12:15 2004提到:
原题目有没有说是互质的?
justry (乐悠悠) 于Sat Mar 27 11:15:58 2004提到:
原题目说m是两两互质的,求公倍数直接把它们 几个乘起来就好,不用函数了
selahx (灵犀一指) 于Sat Mar 27 11:17:45 2004提到:
呵呵~那就好办多了
huhaiming (一生只爱她) 于Sat Mar 27 18:50:03 2004提到:
最小公倍数直接用最大公约数就可以求拉,很简单的了
//最大公约数
int Enclid(int p,int q)
{
if(q==0) return p;
else return Enclid(q,p%q);
}
//最小公倍数
int LCM(int p,int q)
{
return p*q/Enclid(p,q);
}
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店