关于我从小到大求阶乘对,从大到小求阶乘错这件事,求助!!!
查看原帖
关于我从小到大求阶乘对,从大到小求阶乘错这件事,求助!!!
185515
cqsbz_cxy楼主2021/9/30 17:23
#include <bits/stdc++.h>
using namespace std;
int a[1000],b[1000];


inline int read()
{
  int x=0,f=1;
  char ch=getchar();
  while(ch<'0'||ch>'9')
  {
    if(ch=='-')
      f=-1;
    ch=getchar();
  }
  while(ch>='0'&&ch<='9')
  {
    x=(x<<1)+(x<<3)+(ch^48);
    ch=getchar();
  }
  return x*f;
}

inline void jia()
{
  int zhong=0;
  for(int i=1; i<1000; i++)
  {
    b[i]+=a[i]+zhong;
    zhong=b[i]/10;
    b[i]%=10;
  }
}
inline void cheng(int KO)
{
  int zhong=0;
  for(int i=1; i<1000; i++)
  {
    a[i]=a[i]*KO+zhong;
    zhong=a[i]/10;
    a[i]%=10;
  }
}

int main()
{
  int n;
  n=read();
  a[1]=1;
  for(int i=1; i<=n; i++)//就是这里,从小到大是正确,从大到小是错误
  {
    cheng(i);
    jia();
  }
  int flag=0;
  for(int i=999; i>=1; i--)
  {
    if(b[i]!=0)
      flag=1;
    if(flag)
      printf("%d",b[i]);
  }
  printf("\n");
  return 0;
}
2021/9/30 17:23
加载中...