2012年3月6日

各位数字之和——一个神奇的结论

摘要: 今天下午翻了翻XX大学的ACM模版,作为新手,当然挑能看懂的来看,结果就看到了这样一个简单的问题:题目是这样的,输入一个正整数,将它的各位数字加起来,如果得到的不是一位数,将这个和的各位数字再加起来,如此循环,直到得到一个一位数,最后输出这个个位数。最简单的方法是使用递归模拟上述求和过程,直到和小于10:# include <stdio.h>int dig_sum(int x){ int sum = x; if (x < 10) return sum; else { sum = 0; while (x > 0) { ... 阅读全文

posted @ 2012-03-06 17:38 getgoing 阅读(1358) 评论(0) 推荐(0)

csu 1087 斐波那契数列

摘要: 晕,题目上描述是 N<=20,但是建个20大小的表,提交是WA,用递归提价一下AC了。猜测是为了练习,不让大家偷懒。。猜测测试数据最大的是21。。为了偷懒,建了个25大小的表(注释部分),一提交果然AC,彻底晕倒了,要卡的话应该给个稍大一点的啊。。当然如果特别大,时间限制也要改大一点,谅解了。。。/* 1087: 斐波那契数列 *///用递归法计算第N个斐波那契数,并输出所用到的递归次数//斐波那契数列排列如下:1,1,2,3,5,8,……# include <stdio.h>int fun(int n, int *cnt);//const int f[] = {0,1,1, 阅读全文

posted @ 2012-03-06 10:15 getgoing 阅读(412) 评论(0) 推荐(0)

原创题目

摘要: 1. 用二分法找一个数的整数部分,这个数在区间[1, 9]内。2. 如何通过位运算对一个数(10的倍数)除以10,这种方法真的比直接除以10快吗?3. 一串不超过 k 的序列,由四个字母组合而成:u l r d ,代表着一个3×3棋盘上一个棋子的移动序列,u l r d 分别表示向上、下、左、右四个方向移动,现在限定棋子只能在棋盘内移动,问有多少个这样的不同序列? 提示:不能连续向着一个方向移动超过 3 次(中间可以有非相反方向的移动),即对其中任一连续子序列所有的 u(l) 方向移动次数 p 减去所有的 d(r) 方向移动次数 q 满足 |p - q| <= 2,例如 uuu 阅读全文

posted @ 2012-03-06 09:17 getgoing 阅读(194) 评论(0) 推荐(0)

[转载]scanf和gets的几个区别

摘要: 以下内容转载自:scanf 和 gets 读取字符串深入了解scanf()/getchar()和gets()等函数scanf与gets函数读取字符串的区别今天看到一段话,大致是说gets比scanf()快,有点吃惊,搜了一下,scanf()和gets的区别大致有着几条:1.scanf() 会忽略行开头的所有空格,并以空格、换行符结束输入; 使用getchar()读取scanf语句执行后,缓冲区留下的换行符, gets读入以任何字符开始的字符串,以换行符结束,但之后会丢弃换行符并以'\0'代替;2. 在数据大量的情况下,用gets读取快于scanf()10倍以上(注:来自pudn 阅读全文

posted @ 2012-03-06 09:13 getgoing 阅读(12749) 评论(0) 推荐(2)

导航