首页 > 其他分享 >CP1042 阶乘的尾数

CP1042 阶乘的尾数

时间:2023-01-04 14:44:51浏览次数:36  
标签:digit 尾数 sum int CP1042 阶乘 change

本想做个小题,没想到牵扯出了大数阶乘(悲

本质上还是极限

俺的做法:

#include <stdio.h>
int change(int m);
int main()
{
	int a[20001];
	int m,u;
	int temp,digit,n,i,j=0;
	int sum=0;
	scanf("%d%d",&n,&m);
	u=m;
	a[0]=1;//从1开始乘
	digit=1;//位数从第一位开始
	for(i=2;i<=n;i++)
	{
		int num=0;
		for(j=0;j<digit;j++)
		{
			temp=a[j]*i+num;//将一个数的每一位数都分别乘以i,
			a[j]=temp%10;//将一个数的每一位数利用数组进行储存
			num=temp/10;
		}
		while(num)//判断退出循环后,num的值是否为0
		{
			a[digit]=num%10;//继续储存
			num=num/10;
			digit++;
		}
	}
    for(i=m-1;i>=0;i--)
    {
		sum+=a[i]*change(u);//重新化为整数类型
		u--;
    }
    printf("%d\n",sum);
	return 0;
}
int change(int u)
{
    int sum=1;
    for(int i=1;i<u;i++)
    {
        sum=sum*10;
    }
    return sum;
}

标签:digit,尾数,sum,int,CP1042,阶乘,change
From: https://www.cnblogs.com/harumakigohan686/p/17024778.html

相关文章

  • 计算n的阶乘
    #include<stdio.h>intmain(){inti=0;inta=0;intn=1;scanf("%d",&a);for(i=1;i<a+1;i++){n=n*i;}printf("%d",n);return0;}......
  • 递归介绍和利用递归算法求阶乘
    题目  题目:利用递归方法求5的阶乘。  温馨提示:n=5很容易求解,如果n=20呢?20!已经远远走出抄4字节整型范围,所以需要用8字节整型或双精度浮点型来完成算法。算法分析 ......
  • 题目:求n的阶乘
    答案:#include<stdio.h>intmain(){inti,n,z;z=1;printf("请输入一个数以求其阶乘:");scanf("%d",&n);for(i=1;i<=n;i++){z=z*i;}printf("该阶乘为:%d",z......
  • 刷题笔记 | 经典算法题-阶乘计算
    题目描述给定一个正整数n,求出n!的值。输入描述输入一个正整数n,n<=1000。输出描述输出n!。输入输出样例示例输入10输出3628800python代码实现:impo......
  • 阶乘和
    #include<stdio.h>//__int64的范围是[0,2^64),即0~18446744073709551615(约1800亿亿)staticunsigned__int64sum_fac(intn);intmain(void){printf("testsum_fac......
  • 使用函数求解并输出阶乘值,输入n,输出n!值。
    #include<stdio.h>intsum(intn)//被调函数中进行计算{ inti,p=1; for(i=1;i<=n;i++) p=p*i; returnp;//返回函数值}intmain(){ ints,i,n; ......
  • noi 1.5 34 求阶乘的和
    描述给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!)输入输入有一行,包含一个正整数n(1<n<12)。输出输出有一行:阶乘的和。样例输入5样例输出153题......
  • noi 34 求阶乘的和
    noi34求阶乘的和描述给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!)输入输入有一行,包含一个正整数n(1<n<12)。输出输出有一行:阶乘的和。样例输入......
  • C语言-求一个数的阶乘(递归法)
    1.函数调用#include<stdio.h>intFac(intn){inti,ret=1;for(i=1;i<=n;i++){ret*=i;}returnret;}intmain(void){intn=0,set;scanf("%d",......
  • 前n项阶乘之和的两种形式.C
    方法一#include<stdio.h>intmain(){ inta,i,n,sum,b;printf("请输入:");scanf("%d",&a);for(n=1;n<=a;n++){ intb=1; for(i=1;i<=n;i++) { b=b*i; } sum......