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;
    }

  • 相关阅读:
    08mybatis映射文件及别名
    2016年阅读书单
    Java的位运算
    Python线程操作
    Java之Jackson框架
    Java线程
    Canvas 知识体系简单总结
    图片轮播
    media页面布局2
    利用@media screen实现网页布局的自适应
  • 原文地址:https://www.cnblogs.com/zzqc/p/6479560.html
Copyright © 2011-2022 走看看