| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1237 人关注过本帖
标题:hdu1014 请问为什么???
只看楼主 加入收藏
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
晕,迟了一步,没电脑用真是件麻烦的事情。
休息了

重剑无锋,大巧不工
2012-08-10 00:22
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 10楼 beyondyf
初等数论研究的问题比较狭窄,应用面不是很广。数学专业一般不会做为必修课程开设。不过初高中的奥数,竞赛之类的倒是比较爱拿数论出题。

我的数论知识是我以前初中自己学的。现在忘了不少,不过要是有空,再捡捡应该不会太费劲就是了。
当时学得也不是太深,只是对那些数论难题比较有兴趣。研究了大概半年,觉得要学的东西太多,就没继续深学。后来才知道,当时想学的好多东西已经不是初等数论范畴了。
2012-08-10 00:55
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
很精湛的代码。我帮你排下版吧:
程序代码:
#include<stdio.h>

int main()
{
    int a,b,c,d,r;

    while(scanf("%d%d",&a,&b) !=EOF)
    {
        for(c=a,d=b;r=c%d;c=d,d=r);
        printf("%10d%10d    %s Choice\n\n",a,b,d==1?"Good":"Bad");
    }

    return 0;
} 

2012-08-10 00:57
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 8楼 pangding
P版 谬赞了。

梅尚程荀
马谭杨奚







                                                       
2012-08-10 10:56
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 10楼 beyondyf
呵呵 杨大哥的代码厉害啊 学习了。

梅尚程荀
马谭杨奚







                                                       
2012-08-10 11:03
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
仔细看了下 杨大哥的代码 有个问题请教下

如果用 a[i + 1] = (a[i] + STEP) % MOD 的方式来遍历小于MOD大于0的所有
自然数时 如果不提出循环终止条件 那么它会以一个相同的周期无限的循环下去
如在一个周期内刚好包含0 ~ MOD-1那么就是好的选择,这样看比较合符思维习惯

但是如果用 c = a % b, a = b, b = c的方式放到一个循环里 这样b进行到一定步骤后
就会等于 0 ,我的问题是 一个整数能对0取模吗? 这样的for循环只能展现一个取模周期
而且为什么我算了下 当a = 3 , b = 5时 for循环 的c值 展现的是 0,1,2, 3而不是
0, 1, 2, 3, 4?

梅尚程荀
马谭杨奚







                                                       
2012-08-10 11:27
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
b 不会得 0 的,因为 b 最后得的是上一轮 c 的值。如果 c 是零循环就结束了。b 是看结束是它是不是 1。因为任何数 模1 肯定是 0。

这是辗转相除。有容也许听说过?
2012-08-10 12:14
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 17楼 pangding
我的意思是 不在提出循环结束的条件下比较两者的区别
显然题目里的那种方式 可以无限取模相当于一个周期函数 而 杨大哥给的那个算法是只能取得一个周期
因为b是会归结于0的。

梅尚程荀
马谭杨奚







                                                       
2012-08-10 12:32
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
人家原题没让你生成这个伪随机序列,只是问能不能生成。杨大哥那意思是,只要判断一下这两个数互不互质就行了。
2012-08-10 14:17
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
辗转相除速度很快的,n 次相除可以求出 fibonacci(n) 以内两数的最大公约数。所以 100000 其实也除不了几下。不用遍历这个伪随机序列。
2012-08-10 14:20
快速回复:hdu1014 请问为什么???
数据加载中...
 
   



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

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