当前位置:网站首页>Haut OJ 1245: large factorial of CDs --- high precision factorial
Haut OJ 1245: large factorial of CDs --- high precision factorial
2022-07-05 05:17:00 【hunziHang】
Problem description :
cds: I heard that you can already use C Language seeking n! 了
ykc: Of course ! Light yard oj I have already solved all the factorial problems AC 了 , for example 1048 Factorial table ,1050 The cumulative sum of factorials ,1089 The highest position of factorial, etc ……
cds: Oh ? Really? , Then I'll give you a number n, Can you find its factorial immediately ?
ykc: good , That's all right. !
cds: can n Very big
ykc: Don't worry , I use long long Just fine
cds: Good. ,n=80
ykc:&#¥%#woc
Input :
Single instance test , Enter a natural number n(n<=2000)
Output :
Output n The factorial
The sample input :
80
Sample output :
71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000
Cause analysis :
1. utilize i To achieve 1 To n The factorial ,temp Record the number obtained by multiplying each time ,digit Record the number of digits ( So that each number can be multiplied )
2. temp=a[j]*i+num; num It is a number on a bit that multiplies and advances backward (num=temp/10;) The number on the bit that should be carried * i after , Need to add low and progressive num.
3. hold num/10 such as 4 The factorial And finally 4*(2*3), namely 24, here num=2 Save to digit That is to say 1 Location
Build another while Yes, it will appear later num There are several , So use a cycle to save each .
Solution :
#include <stdio.h>
int main()
{
int a[20001];// Store the number obtained by each bit
int temp,digit,n,i,j=0;//temp The number of each time digit The number of digits each time
scanf("%d",&n);
a[0]=1;// from 1 Start to multiply
digit=1;// The number of digits starts from the first
for(i=2;i<=n;i++)
{
int num=0;
for(j=0;j<digit;j++) //for Purpose : Multiply each digit of a number by i,
{
temp=a[j]*i+num;
a[j]=temp%10; // Each digit of a number is stored in an array
num=temp/10;
}
while(num)
{
a[digit]=num%10; // Continue to store the number after the last carry
// The previous carry is in the second for Stored in
num=num/10;
digit++;
}
}
for(i=digit-1;i>=0;i--)// Output each bit in reverse order
printf("%d",a[i]);
printf("\n");
return 0;
}
Multi instance input :
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ll i,j,n;
while(cin>>n)
{
ll digit=1,a[100000]; //a Array ,a[0]=1,digit Need to put it in .
a[0]=1;
for(j=2;j<=n;j++)
{
ll num=0,temp;
for(i=0;i<digit;i++)
{
temp=a[i]*j+num;
a[i]=temp%10;
num=temp/10;
}
while(num)
{
a[digit]=num%10;
num/=10;
digit++;
}
}
for(i=digit-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
}
边栏推荐
- cocos_ Lua loads the file generated by bmfont fnt
- Es module and commonjs learning notes
- [LeetCode] 整数反转【7】
- [binary search] 34 Find the first and last positions of elements in a sorted array
- Research on the value of background repeat of background tiling
- [leetcode] integer inversion [7]
- Generate filled text and pictures
- 发现一个很好的 Solon 框架试手的教学视频(Solon,轻量级应用开发框架)
- [trans]: spécification osgi
- [转]MySQL操作实战(三):表联结
猜你喜欢
随机推荐
[leetcode] integer inversion [7]
Redis has four methods for checking big keys, which are necessary for optimization
Magnifying glass effect
Programmers' experience of delivering takeout
Optimization scheme of win10 virtual machine cluster
Unity synergy
Solon Logging 插件的添加器级别控制和日志器的级别控制
Embedded database development programming (zero)
django连接数据库报错,这是什么原因
PMP考试敏捷占比有多少?解疑
cocos2dx_ Lua card flip
Stm32cubemx (8): RTC and RTC wake-up interrupt
Research on the value of background repeat of background tiling
C语言杂谈1
[binary search] 34 Find the first and last positions of elements in a sorted array
小程序直播+電商,想做新零售電商就用它吧!
[转]: OSGI规范 深入浅出
Unity parallax infinite scrolling background
服务熔断 Hystrix
Solon Auth 认证框架使用演示(更简单的认证框架)

![To be continued] [UE4 notes] L4 object editing](/img/0f/cfe788f07423222f9eed90f4cece7d.jpg)




![[轉]: OSGI規範 深入淺出](/img/54/d73a8d3e375dfe430c2eca39617b9c.png)


