本文主要是介绍ural 1108,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大数乘法 不会java 比赛的时候各种细节RE WA ........
#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;
int un[] = {0,0,0,0,0,1,3,6,13,26,52,104,208,416,833,1667,3335,6700};
int a[10010],b[10010],c[10010],ca;
void cc()
{int w = 0;memset(c, 0, sizeof(c));for(int i = 0; i <= un[ca]; i++){for(int j = 0; j <= un[ca]; j++){c[i+j] += a[i]*b[j];if(c[i+j] > 9999){w = c[i+j]/10000;c[i+j+1] += w;c[i+j] %= 10000;}}}w = 0;for(int i = 0; i <= un[ca]; i++){c[i] += w;w = c[i]/10000;c[i] %= 10000;}memcpy(a, c, sizeof(c));c[0] += 1;memcpy(b, c, sizeof(c));
}
int main()
{int n;scanf("%d",&n);memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));a[0] = 1;b[0] = 2;ca = 0;for(int i = 0; i < n; i++){int j;for(j = un[ca]; j >= 0; j--){if(b[j])break;}//printf("%d\n",j);printf("%d",b[j--]);for(; j >= 0; j--){printf("%.4d",b[j]);}putchar('\n');if(i == n-1)break;cc();ca++;}return 0;
}
这篇关于ural 1108的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!