[关闭]
@DingCao-HJJ 2015-10-20T17:53:24.000000Z 字数 538 阅读 1150

sicily_1029 Rabbit

sicily 高精度计算


题目链接: http://soj.sysu.edu.cn/1029

思路

高精度加法来递推结果,数组足够长就可以了。

代码

  1. // Problem#: 1029
  2. #include<stdio.h>
  3. #include<string.h>
  4. int main() {
  5. int i, m, d;
  6. long long all0[100 + 1], all1[100 + 1];
  7. while (scanf("%d %d", &m, &d) && m) {
  8. memset(all0, 0, sizeof(all0));
  9. memset(all1, 0, sizeof(all1));
  10. for (i = 1, all0[0] = 1; i <= d; i++) {
  11. if (i + 1 - m > 0) {
  12. all1[i] = all1[i - 1] + all1[i - m]
  13. + (all0[i - 1] + all0[i - m]) / 10000000000000000;
  14. all0[i] = (all0[i - 1] + all0[i - m]) % 10000000000000000;
  15. } else {
  16. all0[i] = all0[i - 1] + 1;
  17. }
  18. }
  19. if (all1[d]) printf("%lld%016lld\n", all1[d], all0[d]);
  20. else printf("%lld\n", all0[d]);
  21. }
  22. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注