@DingCao-HJJ
2015-10-20T09:53:24.000000Z
字数 538
阅读 1284
sicily 高精度计算
题目链接: http://soj.sysu.edu.cn/1029
高精度加法来递推结果,数组足够长就可以了。
// Problem#: 1029#include<stdio.h>#include<string.h>int main() {int i, m, d;long long all0[100 + 1], all1[100 + 1];while (scanf("%d %d", &m, &d) && m) {memset(all0, 0, sizeof(all0));memset(all1, 0, sizeof(all1));for (i = 1, all0[0] = 1; i <= d; i++) {if (i + 1 - m > 0) {all1[i] = all1[i - 1] + all1[i - m]+ (all0[i - 1] + all0[i - m]) / 10000000000000000;all0[i] = (all0[i - 1] + all0[i - m]) % 10000000000000000;} else {all0[i] = all0[i - 1] + 1;}}if (all1[d]) printf("%lld%016lld\n", all1[d], all0[d]);else printf("%lld\n", all0[d]);}}
