HDU 1042 与1050类似,每个整形保存几位,然后整个拼凑起来

来源:互联网 发布:js读取本地json文件 编辑:程序博客网 时间:2024/06/02 11:27

用大数模板,加法转乘法超时了,然后用二进制压缩又失败了。。

最后用与1250类似的办法拼凑

#include <iostream>  using namespace std;    int num[8000];  int main()  {      int i , j, n, t , carry;      while(scanf("%d", &n)!= EOF)      {          if (n == 0)          {              printf("1\n");              continue;          }          memset(num, 0, sizeof(num));          t = 1;  //位数        num[1] = 1;          for (i = 2 ; i <= n; i++)          {              carry = 0;              for (j = 1; j <= t; j++)              {                  num[j] = num[j] * i + carry;                  carry = num[j] / 100000;                  num[j] = num[j] % 100000;              }              while (carry)  //进位使得位数增加            {                  t++;                  num[t] = carry % 100000;                  carry /= 100000;              }          }          printf("%d", num[t]);          for (i = t - 1; i >= 1; i--)          {              printf("%05d", num[i]); //格式化输出, 补前导0          }          printf("\n");      }      return 0;  }