标签:cto number 内容 完数 nat ·· 自己 变量 printf
返回sum
在for循环结束后判断如果flag==0 输出No perfect number
在刚开始的时候我实现了函数的所有功能,提交PTA的但是显示在最大范围内一直超时,完全不知都从何处优化
我就在思考,最大范围应该指的是从1到10000内所有的完数,我觉得应该把所有的完数都试着输出一下
我发现除了1之外,所有的完数都是偶数,这就代表着奇数可以不用判断,可以让我的代码的时间复杂度减少一半
让后我就把我的for循环的执行语句从i++改成i+=2,并且如果i是奇数,通过i++的方式让其变成偶数,完美解决问题,可能还有其他完数的规律 但是懒得找了
再判断n如果是奇数,返回a,不然返回b
如果flag==0,则输出No Fibonacci number
这道题的难点就在于如何让最后一个数不输出空格,其他的都比较简单。我想了两个方法,第一个方法用数组,把每次要输出的值都交给数组res[j],然后让i和j进行判断,如果i不等于j-1,则都输出空格,也就是说把输出值和输出空格这两件事独立起来分开判断。第二个方法就是再定义一个变量cnt=1用来做计数器,在每次输出前判断cnt的值,如果cnt==1,则单独输出一个数,cnt为其他值则输出空格+数,cnt++
这道题并没有想题目那样那么麻烦,并不用向题目中那样需要算m!,n!和(n-m)!,高中学过,组合数公式等价于[m(m-1)···*(m-n+1)]/[n(n-1)···*1],实现后面这个算法就可以计算出组合数了
6-7使用函数输出指定范围内的完数
我的代码
吴越的代码
在吴越代码中,factorsum函数中,他用了if语句将number==1的情况分离出来判断,然后用一个for循环判断当number>1的情况。而我的代码是直接用一个do while 循环把所有的情况都包容进去了,我的代码在这方面做的比吴越的好。而且五月的代码在最后还要判断sum是否==num,这个是没有必要的,因为主函数中的if语句才是判断返回的值是否和原数相当的语句,没必要在函数中判断。在factorsum函数中 ,我更喜欢我的代码
printfPN函数中,吴越的代码不全,不做评论
最后一道题时间不够,只实现的最基本的功能,但是一些特殊的要求还没有实现,感觉自己的思维还是不够灵敏,一些想法还是出现的太晚了
不太满意,多练习,看看别人的代码,学习一下别人的代码的有点,而且平常用惯了VS 觉得用devc十分的难用,刚开始都不知道如何调试,导致我的代码如果出问题都是直接用脑子模拟代码的输出和各个变量的计算,十分浪费时间,只有到最后一题,才开始学习如何用devc调试,浪费了很多时间
标签:cto number 内容 完数 nat ·· 自己 变量 printf
原文地址:http://www.cnblogs.com/zc-565095526/p/7854364.html