正文

Zju 2042 Divisibility2006-08-02 21:46:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/cruxd/17133.html

分享到:

1994121 2006-08-02 21:28:14 Accepted 2042 C++ 00:00.39 392K St.Crux 做了一个半钟头,贡献了n个wa和rte,终于ac了。题目还是比较有意思的,在算术式里插加减号,使结果被某个数整除。而且是那么的像bfs......我的dp写的一如既往的烂,而且中途还测试了一下c里%的用法。 其实这些题的做法大同小异,都是用一个数组来表示当前可能达到的状态情况,达到置1,然后在下一步搜索这个数组中上一步的情况,然后再加以处理。只是这个题数据可能比较BT一点。 还有对memcpy的赋值不理解,http://www.kfbb.cn/blog/blogview.asp?logID=482,导致我后来又wa了n次。 #include <cstdio>#include <string> int a[100], b[100], m, n, k; int main(){ int i, j, u; //freopen("div.16", "r", stdin); //freopen("in.txt", "r", stdin); scanf("%d", &m); for(i = 0; i < m; i ++) {  memset(a, 0, sizeof(a));  memset(b, 0, sizeof(b));  if(i) printf("\n");  scanf("%d %d", &n, &k);    int t;  scanf("%d", &t);  t %= k;   if(t < 0) t += k;  a[t] = 1;    for(j = 1; j < n; j ++)  {   scanf("%d", &t);   for(u = 0; u < k; u ++)   {    if(a[u])    {     int l = (u + t) % k;     int r = (u - t) % k;     if(l < 0) l += k;     if(r < 0) r += k;     b[l] = 1;     b[r] = 1;    }   }   //memset(a, 0, sizeof(a));   memcpy(a, b, sizeof(b));   memset(b, 0, sizeof(b));  }  if(a[0])   printf("Divisible\n");  else   printf("Not divisible\n"); } return 0;}

阅读(3521) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册