| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6443 人关注过本帖, 1 人收藏
标题:求助!!3n+1 问题怎么做?
只看楼主 加入收藏
安然之风
Rank: 2
等 级:论坛游民
帖 子:43
专家分:23
注 册:2011-1-6
结帖率:63.64%
收藏(1)
已结贴  问题点数:20 回复次数:20 
求助!!3n+1 问题怎么做?
题目:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1.
例如:3—》10—》5—》16—》8—》4—》2—》1.
输入n,输出变换的次数。n<=10^9(10的9次方)。
样例输入:3
样例输出:7
搜索更多相关主题的帖子: 自然数 
2011-04-04 14:06
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:3 
这不是作业贴嘛,先自己想下思路,不然就直接拿来主义了

我的地盘
2011-04-04 14:13
安然之风
Rank: 2
等 级:论坛游民
帖 子:43
专家分:23
注 册:2011-1-6
收藏
得分:0 
不是作业!
涉及到乘法溢出问题。
探讨怎么A掉!
帮帮忙!
谢谢!
2011-04-04 14:27
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:3 
程序代码:
root@~ #cat 1.c
#include <stdio.h>

int main (void) {

        int n,m=0;
        scanf("%i",&n);
        do {
                if(n%2==0) {
                        n/=2;printf ("%i ",n);
                }else{
                        n=3*n+1; printf ("%i ",n);
                }
                m++;
        }while(n!=1);
        printf ("\nChange counts is=%i\n",m);
        return 0;

}

root@~ #./1
3
10 5 16 8 4 2 1
Change counts is=7
root@~ #./1
5
16 8 4 2 1
Change counts is=5
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-04 16:26
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:3 
楼上你以为自己很了不起啊 帮人家做作业  爱出风头是吧
2011-04-04 16:32
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用wujieru在2011-4-4 16:32:20的发言:

楼上你以为自己很了不起啊 帮人家做作业  爱出风头是吧

他的作业没准就是我以后的作业, 我是菜鸟, 还有很多很多都没有学到。 以后有不懂的, 还请您多多指教呢

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-04 16:42
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
我现在就直教你 别做完了就贴出来 没意思的 先让他自己思考
2011-04-04 16:44
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:3 
dp.

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2011-04-04 17:13
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
回复 3楼 安然之风
你用 long long 试试,应该就不会溢出了吧。

你可以再提交之前先自己看看,10^9 以内的数究竟有没有溢出的~
如果有告诉我们是哪个数也好~


[ 本帖最后由 pangding 于 2011-4-4 20:48 编辑 ]
2011-04-04 20:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
10的9次方还真是比较夸张呀。

我试了 3*10^8 次方以内的数,反正是没有溢出的。再大不知道什么效果,算的已经挺慢的了,看来我用的算法也不是很好~
2011-04-04 21:19
快速回复:求助!!3n+1 问题怎么做?
数据加载中...
 
   



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

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