UVA 371 公式题

Ackermann Functions

题目:在这里插入图片描述
在这里插入图片描述

注意:1.区间的端点可能是反的;2.计算过程中用long long防止溢出。

疑惑,先看两端代码

代码一

#include"stdlib.h"
#include"stdio.h"
int main()
{
    int i,j,count,maxcount,pi,temp,maxp,k;
    while(scanf("%d %d",&i,&j)==2&&(i||j))
    {
        if(i>j)
        {
            temp=i;
            i=j;
            j=temp;
        }
        maxcount=0;maxp=i;

        for(k=i; k<=j; k++)
        {
            pi=k;
            count=0;
            do
            {
                if(pi%2==0)
                {
                     pi/=2;
                }
                else
                   pi=3*pi+1;
                count++;
            }while(pi>1);
            if(count>maxcount)
            {
                maxcount=count;
                maxp=k;
            }
        }
        printf("Between %d and %d, %d generates the longest sequence of %d values.\n",i,j,maxp,maxcount);

    }
    return 0;
}

运行结果:
代码一

代码二:

#include"stdlib.h"
#include"stdio.h"
int main()
{
    long long  i,j,count,maxcount,pi,temp,maxp,k;
    while(scanf("%I64d %I64d",&i,&j)==2&&(i||j))
    {
        if(i>j)
        {
            temp=i;
            i=j;
            j=temp;
        }
        maxcount=0;maxp=i;

        for(k=i; k<=j; k++)
        {
            pi=k;
            count=0;
            do
            {
                if(pi%2==0)
                {
                     pi/=2;
                }
                else
                   pi=3*pi+1;
                count++;
            }while(pi>1);
            if(count>maxcount)
            {
                maxcount=count;
                maxp=k;
            }
        }
        printf("Between %I64d and %I64d, %I64d generates the longest sequence of %I64d values.\n",i,j,maxp,maxcount);

    }
    return 0;
}

运行结果:
代码二

疑惑

结果:代码一过了,代码二没过。

两个代码的内容一模一样,唯有 定义的数据类型 不一样。
代码一:int  代码二:long long
按理说,long long 一定可以过,但是没过。说明可能 判题系统本身有问题。(我是在我们学校平台上提交的,应该和uva官网一样的)

总结反思

1.题目本身不难,但是看英文很累,抓不住关键,浪费时间。
要好好理解题意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值