摘要: 题意:给出一个200以内的数n,求出这个数的倍数M,使得M中只有0和1组成。M最多100位。分析:这个题竟然用的是bfs的思想。不看讨论真的想不出来。思路是这样的:1.最高位一定是1.curnum%n不为0时,说明curnum不符合要求。2.判断curnum*10%n和(curnum*10+1)%n是否为0,不为0的话,令curnum=curnum*10和curnum*10+1继续做第二步。直到取余之后为0即可。3.这样就会遇到大数存储的问题。可以这样解决:令 (curnum*10+1)%n=a,求((curnum*10+1)*10+1)%m.由定理(a*b)%n = (a%n *b%n)%n 阅读全文
posted @ 2012-07-30 09:03 pushing my way 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题意:X坐标轴上有A,B两点,两点的坐标都介于0与100000之间(包括),A点可以有两种方式走动:1.从A走到A-1或者A+1,用时1分钟。2.从A到2*A,用时1分钟,求从A到B最短的时间。分析:这个题用BFS,数组应该开多大呢?有的点乘以2后会比100000大。其实开100001就可以了。如果存在一个路径中有比100000还大的点,那一定存在一条所用时间还要小的所有的点都在100000一下的路径。代码很简单:View Code 1 #include <iostream> 2 #include <stdio.h> 3 #include <queue> 4 阅读全文
posted @ 2012-07-30 08:29 pushing my way 阅读(205) 评论(0) 推荐(0) 编辑