回 帖 发 新 帖 刷新版面

主题:第44次编程比赛结果~~~

首先非常抱歉的是这次题目出得非常的不好:
1、环境的不好,包括定下的gcc编译器,和unsigned long long范围,大部分朋友非常不适应,其实原来的两题的范围都是极大的,远远超过unsigned long long的范围,但这又需要大家处理巨型数的加减乘除和取余运算,比较麻烦,所以定下了整形的最大范围。

2、题目本身的不好,这次题目出得没有什么难度,不涉及很深的数据结构等知识,本意是希望能吸引更多的人参加,希望只要认真学过基础C/C++的都能写出来,但在细节方面则有很多讲究,"都能写出来"实现了,"细节讲究方面",没有实现。事前评估严重不到位。


不过大家辛辛苦苦写出来的程序还是要测试的:)
下面是测试的一下说明:
1、原来指定使用GCC编译器的,但是绝大部分选择了vc,所以最后的编译器选择了,vc2003

2、很多人的程序都不符合测试标准,我对不符合测试标准的进行了一些改动,具体如下:
(1)声明的更改,如果你程序里没有使用任何64位整形变量,则将unsigned long,改为unsigned __int64,如果你程序里有使用64为整形变量,只将这些变量声明改为unsigned __int64,如果你程序里没有使用上述的变量,那么我则将程序里所有整形变量的声明全部改为unsigned __int64而不会考虑需不需要更改

(2)相关函数的更改,如果你的程序里用到需要区分32位或64为变量的函数时,则更改为64位的函数

(3)很多朋友没有按照要求用程序接受参数,进行处理,而使用了标准输入输出,同意改为接受参数形式,第一题参数转数字的函数同意用_atoi64()


以下朋友程序格式完全符合要求,向他们表示感谢:
    wlsss   willzhanglala  独行者  liren0   scanf


有关标准程序:
    这些题目都是我自己想出来的,所以没找到什么现成的标准程序,由于一开始考虑到的范围是非常巨大的,所以我用python写了个程序用作测试,因为python的长整型的范围几乎无限,并且精度到个位,所以我在这就不发出来了



下面开始测试:
第一题:
    1:参数为20亿,程序结果都正确
       在速度上,tenm,xylgg和flypampas的程序耗时在60ms左右,其他人都在40ms左右

    2:参数为:1922337203685477580

       答案:111011000101201111200020011001120020000102002002
     
       结果:heibird,scanf答案错误,kofox,tenm,xylgg,wshong,flypampas超时  

   
第一题:独行者,hotzenlotz,ITER,liren0,wlsss,难分上下
   
        但取极限值2^64-1时
        结果:100110120101002020101011001001110201202012011120101
        得出正确答案的仅wlsss


第二题测试:

        1、参数:accbac
           答案:1573/5040 197/630
           flypampas,xylgg答案出错
           
           当字符串在除了首尾的其他地方出现a时,flypampas的结果会出错

           速度测试基本一样

           (又测试几组数据,算法基本正确)

           当测试到参数:abbcabcacbcabacaca时,tenm第二次提交的程序
           唯一得出了正确答案:3051461327/13332664800 67132149299/293318625600

           答案没有超出范围,但其他朋友的程序在处理数据的时候超出了范围,tenm这点处理的最好



综合以上两题,wlsss没有解答第二题,tenm第二题略占优势,但第一题实现的有问题
              
           
所以我认为,冠军应该是:[color=FF0000]hotzenlotz[/color]
            他两题实现的都还不错,请准备下次比赛



[color=0000FF]由于题目出的很不到位,所以冠军的选出比较困难,再次抱歉~~~[/color]





    

回复列表 (共15个回复)

11 楼

[quote]
而heibird则吃亏在了
int main(int argc, char *argv[])
{
  __int64 inputdata = strtol(argv[1],NULL,10);
............
}
上,strtol()函数的返回值为long型。[/quote]

几年没碰C/C++,不知道还有如此类型“__int64”。吃亏倒说不上,纯属于打发上个无聊的周末。

12 楼

[quote]
2、很多人的程序都不符合测试标准,我对不符合测试标准的进行了一些改动,具体如下:
(1) 声明的更改,如果你程序里没有使用任何64位整形变量,则将unsigned long,改为unsigned __int64,如果你程序里有使用64 为整形变量,只将这些变量声明改为unsigned __int64,如果你程序里没有使用上述的变量,那么我则将程序里所有整形变量的声明全部改为 unsigned __int64而不会考虑需不需要更改

。。。

(3)很多朋友没有按照要求用程序接受参数,进行处理,而使用了标准输入输出,同意改为接受参数形式,第一题参数转数字的函数同意用_atoi64()

[/quote]

按如上两个调整我那程序,测试(参数为:1922337203685477580)结果是正确的,如此看来猫大哥修改得可不怎么认真哦。。。。呵呵~~

13 楼

heibird使用了unsigned long long ,是符合要求的,但因为环境转移到vc了,所以我只是将其换成了unsigned __int64了,而因为你原来使用的是64位的环境,所以我认为你的相关函数全是针对64位环境的,就没有看你的函数,呵呵~~

14 楼

支持一下  呵呵

15 楼

首先非常抱歉的是这次题目出得非常的不好:
1、环境的不好,包括定下的gcc编译器,和unsigned long long范围,大部分朋友非常不适应,其实原来的两题的范围都是极大的,远远超过unsigned long long的范围,但这又需要大家处理巨型数的加减乘除和取余运算,比较麻烦,所以定下了整形的最大范围。

2、题目本身的不好,这次题目出得没有什么难度,不涉及很深的数据结构等知识,本意是希望能吸引更多的人参加,希望只要认真学过基础C/C++的都能写出来,但在细节方面则有很多讲究,"都能写出来"实现了,"细节讲究方面",没有实现。事前评估严重不到位。


不过大家辛辛苦苦写出来的程序还是要测试的:)
下面是测试的一下说明:
1、原来指定使用GCC编译器的,但是绝大部分选择了vc,所以最后的编译器选择了,vc2003

2、很多人的程序都不符合测试标准,我对不符合测试标准的进行了一些改动,具体如下:
(1)声明的更改,如果你程序里没有使用任何64位整形变量,则将unsigned long,改为unsigned __int64,如果你程序里有使用64为整形变量,只将这些变量声明改为unsigned __int64,如果你程序里没有使用上述的变量,那么我则将程序里所有整形变量的声明全部改为unsigned __int64而不会考虑需不需要更改

(2)相关函数的更改,如果你的程序里用到需要区分32位或64为变量的函数时,则更改为64位的函数

(3)很多朋友没有按照要求用程序接受参数,进行处理,而使用了标准输入输出,同意改为接受参数形式,第一题参数转数字的函数同意用_atoi64()


以下朋友程序格式完全符合要求,向他们表示感谢:
    wlsss   willzhanglala  独行者  liren0   scanf


有关标准程序:
    这些题目都是我自己想出来的,所以没找到什么现成的标准程序,由于一开始考虑到的范围是非常巨大的,所以我用python写了个程序用作测试,因为python的长整型的范围几乎无限,并且精度到个位,所以我在这就不发出来了



下面开始测试:
第一题:
    1:参数为20亿,程序结果都正确
       在速度上,tenm,xylgg和flypampas的程序耗时在60ms左右,其他人都在40ms左右

    2:参数为:1922337203685477580

       答案:111011000101201111200020011001120020000102002002
     
       结果:heibird,scanf答案错误,kofox,tenm,xylgg,wshong,flypampas超时  

   
第一题:独行者,hotzenlotz,ITER,liren0,wlsss,难分上下
   
        但取极限值2^64-1时
        结果:100110120101002020101011001001110201202012011120101
        得出正确答案的仅wlsss


第二题测试:

        1、参数:accbac
           答案:1573/5040 197/630
           flypampas,xylgg答案出错
           
           当字符串在除了首尾的其他地方出现a时,flypampas的结果会出错

           速度测试基本一样

           (又测试几组数据,算法基本正确)

           当测试到参数:abbcabcacbcabacaca时,tenm第二次提交的程序
           唯一得出了正确答案:3051461327/13332664800 67132149299/293318625600

           答案没有超出范围,但其他朋友的程序在处理数据的时候超出了范围,tenm这点处理的最好



综合以上两题,wlsss没有解答第二题,tenm第二题略占优势,但第一题实现的有问题
              
           
所以我认为,冠军应该是:hotzenlotz
            他两题实现的都还不错,请准备下次比赛



由于题目出的很不到位,所以冠军的选出比较困难,再次抱歉

我来回复

您尚未登录,请登录后再回复。点此登录或注册