PAT基础编程题目-6-10 阶乘计算升级版
题目详情
题目地址:https://pintia.cn/problem-sets/14/problems/742
解答
C语言版
#include <stdio.h>
void Print_Factorial(const int N
);
int main()
{
int N
;
scanf("%d", &N
);
Print_Factorial(N
);
return 0;
}
void Print_Factorial(const int N
) {
if (N
< 0) {
printf("Invalid input\n");
return;
}
int number
[3000] = { 0 };
int product
;
int carry
;
int size
= 1;
int flag
, i
;
number
[0] = 1;
for (int v
= 2; v
<= N
; v
++) {
for (i
= 0; i
< size
; i
++) {
carry
= 0;
flag
= 1;
while (flag
) {
product
= number
[i
] * v
+ carry
;
number
[i
] = product
% 10;
if (product
>= 10) {
carry
= product
/ 10;
i
++;
flag
= 1;
}
else {
flag
= 0;
}
}
}
size
= i
;
}
for (i
= size
-1; i
>=0 ; i
--)
printf("%d", number
[i
]);
}
C++版
#include<iostream>
using namespace std
;
void Print_Factorial(const int N
);
int main()
{
int N
;
cin
>> N
;
Print_Factorial(N
);
return 0;
}
void Print_Factorial(const int N
) {
if (N
< 0) {
cout
<< "Invalid input\n";
return;
}
int number
[3000] = { 0 };
int product
;
int carry
;
int size
= 1;
int flag
, i
;
number
[0] = 1;
for (int v
= 2; v
<= N
; v
++) {
for (i
= 0; i
< size
; i
++) {
carry
= 0;
flag
= 1;
while (flag
) {
product
= number
[i
] * v
+ carry
;
number
[i
] = product
% 10;
if (product
>= 10) {
carry
= product
/ 10;
i
++;
flag
= 1;
}
else {
flag
= 0;
}
}
}
size
= i
;
}
cout
<< "size=" << size
<< endl
;
for (i
= size
- 1; i
>= 0; i
--)
cout
<< number
[i
];
}
Java版
public class Main{
private static void Print_Factorial(final int N
) {
if(N
<0) {
System
.out
.println("Invalid input");
} else {
int [] number
= new int[3000];
int product
, carry
;
int i
;
int size
= 1;
number
[0] = 1;
boolean flag
= true;
for (int value
= 2; value
<= N
; value
++) {
for (i
= 0; i
< size
; i
++) {
carry
= 0;
flag
= true;
while(flag
) {
product
= number
[i
]*value
+ carry
;
number
[i
] = product
%10;
if(product
>=10) {
carry
= product
/10;
i
++;
flag
= true;
} else {
flag
= false;
}
}
}
size
= i
;
}
System
.out
.println("size="+size
);
for (i
= size
-1; i
>= 0; i
--) {
System
.out
.print(number
[i
]);
}
}
}
public static void main(String
[] args
) {
int N
= 0;
Scanner scanner
= new Scanner(System
.in
);
if(scanner
.hasNext()) {
N
= scanner
.nextInt();
}
scanner
.close();
Print_Factorial(N
);
}
}
创作不易,喜欢的话加个关注点个赞,谢谢谢谢谢谢!
转载请注明原文地址:https://ipadbbs.8miu.com/read-54931.html