首页 > 其他分享 >1134高精度阶乘(数组)

1134高精度阶乘(数组)

时间:2024-06-03 19:33:01浏览次数:12  
标签:10 高精度 int 1134 数组 printf 阶乘 倒序 进位

#include <stdio.h>
#define N 3000 //定义数组长度
int main()
{
    int a[N],i,j,k,n;
    while(scanf("%d",&n)!=EOF)
    {
	   	for(i=0;i<N;i++) //初始化数组
	    a[i]=0;
	    a[0]=1; //第一位设为1
	    k=0; //记录进位坐标
	    for(i=1;i<=n;i++) //计算阶乘
	    {
	        for(j=0;j<=k;j++)
	            a[j]=a[j]*i; //每一位与i相乘
	        for(j=0;j<=k;j++)
	        {
	            if(a[j]>9) //判断是否需要进位 ****精髓**** 
	            {
	                a[j+1]+=a[j]/10; //高一位加上进位值
	                a[j]=a[j]%10; //当前位保留个位数
	                if(j==k) k++; //更新进位坐标
	            }
	        }
	    }
	    for(i=k;i>=0;i--) //倒序输出结果
	        printf("%d",a[i]);
	    printf("\n");
	}
    
}

看看注释,应该能看懂

欢迎在评论区讨论!!

标签:10,高精度,int,1134,数组,printf,阶乘,倒序,进位
From: https://blog.csdn.net/2301_79366650/article/details/139420892

相关文章

  • 高精度-高精度(信息学奥赛1169)
    #include<iostream>#include<cmath>#include<vector>usingnamespacestd;intmain(){stringa,b;cin>>a>>b;vector<int>x,y,sum;for(inti=a.size()-1;i>=0;i--){x.push_back(a[i]-'0&#......
  • 高精度 加+ 高精度
    #include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>a,b;stringm,n;cin>>m>>n;for(inti=m.size()-1;i>=0;i--){a.push_back(m[i]-'0');}for(inti=n.si......
  • 高精度 加+ 低精度
    #include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>a;stringm;intn;cin>>m>>n;for(inti=m.size()-1;i>=0;i--){a.push_back(m[i]-'0');}vector&......
  • 高精度+低精度加法
    #include<bits/stdc++.h>usingnamespacestd;vector<int>z(vector<int>x,inty){ vector<int>s; intsum=0; for(inti=0;i<x.size()||sum;i++){ if(i>=x.size()){ x[i]=0; } sum+=x[i]+y%10; s.push_back(sum%10); sum......
  • 高精度*高精度乘法
    #include<bits/stdc++.h>usingnamespacestd;vector<int>z(vector<int>x,vector<int>y){ intsum=0; vector<int>s(x.size()+y.size()+10,0); for(inti=0;i<x.size();i++){ for(intj=0;j<y.size();j++){ s[i+j]+=x[i]*......
  • 高精度*高精度
    #include<iostream>#include<cmath>#include<vector>usingnamespacestd;intmain(){stringa,b;cin>>a>>b;vector<int>x,y;for(inti=a.size()-1;i>=0;i--){x.push_back(a[i]-'0'......
  • 7-41 计算阶乘和
    对于给定的正整数N,需要你计算S=1!+2!+3!+...+N!。输入格式:输入在一行中给出一个不超过10的正整数N。输出格式:在一行中输出S的值。输入样例:3输出样例:9#include<stdio.h>intmain(){intn;scanf("%d",&n);inty=1;//y是单个数的阶乘"!"int......
  • 国产平替 16/20/24/32-bit 高精度 Σ-Δ 模数转换器芯片
    信格勒微电子的芯片产品已通过行业头部大厂导入验证,深受百万终端客户好评。而且因为fullycompatible.板子拿来,换个芯片,性能更佳。MCU不用改ccode。平替CirrusLogic芯片SIG5632平替CS5532BS(32-bit)速率从CS5532BS的3.84kSPS提高到30.72kSPS,功耗更低,增加5ppm/℃的内......
  • 高精度加低精度
    #include<iostream>#include<string>#include<vector>#include<algorithm>usingnamespacestd;intmain(){ stringa,b; cin>>a; cin>>b; vector<int>cl; for(inti=0;i<=a.size();i++){ if(a[i]!='0'){ a=a......
  • 高精度加法
    #include<bits/stdc++.h>usingnamespacestd;vector<int>z(vector<int>v,vector<int>n){vector<int>s;intsum=0;for(intj=0;j<v.size();j++){ sum+=v[j]+n[j]; s.push_back(sum%10); sum=sum/10; } while(......