zoukankan      html  css  js  c++  java
  • h1042 N!大数乘int

    计算10000以内某个数的阶乘,即大数乘以int,考虑到一个int存一个数位过于繁琐且浪费空间,采用万进制

    一个int存四个位数,但注意除了最高位,其他位不够四位数时要加上前导0凑够四位;

    例123456*15,3456在一个int(a[1])中,12在a[2]中,a[1]=3456*15=51840,a[2]=12*15=180;

    a[1]>9999所以进位:a[2]+=a[1]/10000=185,a[1]%=10000=1840;

    所以ans:185 1840;

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;180
    int num[10005];
    int main()
    {
    int n,i,j,k;
    while (scanf("%d",&n)!=EOF){
    memset(num,0,sizeof(num));
    num[0]=num[1]=1;
    for (i=2;i<=n;i++){
    int len=num[0];
    for (j=1;j<=len;j++) num[j]*=i;
    for (j=1;j<=num[0];j++){
    if (num[j]>9999) {num[j+1]+=num[j]/10000;num[j]%=10000;}
    if (num[num[0]+1]) num[0]++;
    }
    }
    for (i=num[0];i>=1;i--){
    if(i!=num[0]){
    if (num[i]>99&&num[i]<1000)
    printf("0%d",num[i]);
    else if (num[i]>9&&num[i]<100)
    printf("00%d",num[i]);
    else if(num[i]<9)
    printf("000%d",num[i]);
    else printf("%d",num[i]);
    }
    else printf("%d",num[i]);
    }
    printf(" ");
    }
    return 0;
    }

  • 相关阅读:
    P1087 FBI树 二叉树
    回顾测试和测试方法
    Postman
    执行用例的思路、批量执行(可选)、定时任务
    unittest平台分析与建表:
    HTMLTestRunner源码
    665. Non-decreasing Array
    661. Image Smoother
    643. Maximum Average Subarray I
    628. Maximum Product of Three Numbers
  • 原文地址:https://www.cnblogs.com/zzqc/p/6479560.html
Copyright © 2011-2022 走看看