正文

Zju 2759 Perfect Weighing Skill Ⅱ2006-10-01 22:31:00

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

分享到:

2087262 2006-10-01 22:05:43 Accepted 2759 C++ 00:00.10 392K Sirius.D     这题原来如此简单````根本用不到搜索,更谈不上剪枝..可在那时,却害的我肝肠寸断,为伊消得人憔悴.....可叹一位如花似玉的少年,就这样被zoj的Monthly吓的花容失色,颤抖抖,惊颤颤...     (正色道)此题(参见前文)只需把数改成三进制,不断的「借位」进位即可.     如6,即为2,0 == 1,-1,0;     35,即是1,0,2,2 == 1,1,0,-1;     如此这般,这般如此,1处取加,-1处取减,可爱的ac就在你的眼前. #include <cstdio>#include <string> int b[19], n, l; void pt(){ int af = 0, bf = 0, i, x = 1; for(i = 0; i <= l; i ++) {  if(b[i] == -1)  {   af = 1;   if(bf)    printf(" ");   printf("%d", x);   bf = 1;  }  x *= 3; } if(!af)  printf("-1"); printf("\n"); af = 0, bf = 0, x = 1; for(i = 0; i <= l; i ++) {  if(b[i] == 1)  {   af = 1;   if(bf)    printf(" ");   printf("%d", x);   bf = 1;  }  x *= 3; } if(!af)  printf("-1"); printf("\n");} int main(){ //freopen("in.txt", "r", stdin); while(scanf("%d", &n) != EOF) {  memset(b, 0, sizeof(b));    int t = n, i;  l = 0;  while(t)  {   b[l ++] = t % 3;   t /= 3;  }  //pb();  for(i = 0; i < l; i ++)  {   if(b[i] == 3)   {    b[i] = 0;    b[i + 1] ++;   }   if(b[i] == 2)   {    b[i] = -1;    b[i + 1] ++;   }  }  //pb();  pt();  printf("\n"); } return 0;}

阅读(4123) | 评论(1)


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

评论

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