摘要: 解题报告:题目大意:有一个可以产生从0到mod-1的范围的随机数的公式是seed(x+1) = [seed(x) + STEP] % MOD,seed(1)=0,利用这个公式产生的随机数可能有mod-1个不同的,也可能少于这么多,给定一个STEP和一个MOD,若对于这一对你数,可以产生mod-1个不同的随机数,则称这个是一个Good Choice否则为Bad Chioce,还有就是注意一下输出的格式。模拟题,定义一个数组,标记产生的这个随机数是不是已经产生过了,若这个随机数是已经产生过的,那么接下来就会进入一个周期,这样的话随机数就达不到mod-1个了。 1 #include<cstdi 阅读全文
posted @ 2013-05-26 21:47 xiaxiaosheng 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:给定一个正整数N,求这个数的“根”,这里的根指的是:若N是个位数,则它的根就是N,若N是两位或两位以上的数,则的它的根就等于N的各位的和,若它的各位的和任然是两位或两位以上,则再求这个和的各位的和,直到这个各位的和是一个个位数。就是N的根。模拟题,但要注意的是这个N的范围很大,要用数组模拟。 1 #include<cstdio> 2 #include<cstring> 3 int main() { 4 int N,ans=0; 5 char str[1000]; 6 while(scanf("%s",str)) { 7 if(st 阅读全文
posted @ 2013-05-26 21:19 xiaxiaosheng 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:给定一个有N层的数塔,数塔的第i层有i个数,从数塔的第一层出发,每次只能经过相邻的两条路,求走到最底层时走过的那条路线上的数的和最大是多少?典型的动态规划,一看到这题,毫不犹豫的用了递归写,测试也过了,但交上去就WA了,才知道,递归调用函数是很花时间的,后来改成直接用for循环,46s就过了。递归的公式是map[i][j]+=(map[i+1][j]>map[i+1][j+1]? map[i+1][j]:map[i+1][j+1]);就是说当我现在在第i层的第j个数的时候,这个位置可以由第i+1层第j个或者第i+1层第j+1个得到,这就比较一下,这两种走法,哪种走法的 阅读全文
posted @ 2013-05-26 20:35 xiaxiaosheng 阅读(296) 评论(2) 推荐(0) 编辑