标题:斐波那契数列
只看楼主
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 10楼 rjsp
真的不可以啊,我变成长整形也不可以,应该怎么做啊?不过我挺佩服楼主写代码很厉害,我也尝试了用自己的办法写这题,(还没写完),版主大大可以花时间回答怎么解决吗?

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-22 19:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
真的不可以啊,我变成长整形也不可以 ------ 谁说变成长整形就可以的呀?我说的是uint64_t,而C/C++并没有规定long是多长,可能小于64bits,也可能大于64bits。
版主大大可以花时间回答怎么解决吗 ------ 你的代码就是9楼的代码吗?如果是的话,我在10楼已经回答了“x/hcf(x,y)*y 可能会溢出,int存不下”。

程序代码:
#include <iostream>
using namespace std;

unsigned hcf( unsigned a, unsigned b ) // std::gcd
{
    while( b!=0 )
    {
        unsigned t = a;
        a = b;
        b = t%b;
    }
    return a;
}
unsigned long long lcd( unsigned a, unsigned b ) // std::lcm
{
    return a/hcf(a,b)*1ull*b;
}

int main( void )
{
    unsigned fib[36] = { 0, 1 };
    for( size_t i=2; i!=36; ++i )
        fib[i] = fib[i-2] + fib[i-1];

    for( unsigned x,y; cin>>x>>y; )
    {
        unsigned long long r = lcd( fib[x], fib[y] );
        cout << r << '\n';
    }
}

2019-12-22 19:41
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 12楼 rjsp
大大,你的迷妹已经是N+1了,我现在知识基础是你的万分之一还不到,还有你说的九楼十楼我真的去数十楼九楼是谁了。代码收藏下,回家慢慢啃。谢谢版主大大的指导

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-22 20:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498536-1-1.html




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

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