以右对齐格式打印一个范围的阶乘
原文:https://www . geesforgeks . org/print-factories-of-a-range-in-right-aligned-format/
给定两个数字 m 和 n,任务是找出包括 m 和 n 在内的所有数字的阶乘,然后以下面的格式打印。 例:
Input : 6 10
Output :
720
5040
40320
362880
3628800
Input : 10 20
Output :
3628800
39916800
479001600
6227020800
87178291200
1307674368000
20922789888000
355687428096000
6402373705728000
121645100408832000
2432902008176640000
我们使用 boost 多精度库存储大数的阶乘,并使用 setw()函数打印阶乘。 setw(int)->setw(int)是一个用于结果中意图的函数。
C++
// CPP Program to print format of factorial
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
#include <vector>
using namespace std;
using boost::multiprecision::cpp_int;
vector<cpp_int> find_factorial(int num1, int num2)
{
// vector for store the result
vector<cpp_int> vec;
// variable for store the
// each number factorial
cpp_int fac = 1;
// copy of first number
int temp = num1;
// found first number factorial
while (1) {
if (temp == 1)
break;
fac *= temp;
temp--;
}
// push the first number in result vector
vec.push_back(fac);
// incerement the first number
num1++;
// found the all reaming number
// factorial loop is working until
// all required number factorial founded
while (num1 <= num2) {
fac *= num1;
// store the result of factorial
vec.push_back(fac);
// incerement the first number
num1++;
}
// return the result
return (vec);
}
// function for print the result
void print_format(vector<cpp_int>& result)
{
// setw() is used for fill the blank
// right is used for right justification of data
int digits = result.back().str().size();
for (int i = 0; i < result.size(); i++) {
cout << setw(digits + 1) <<
right << result[i] << endl;
}
}
// Driver function
int main()
{
// number which found the factorial
// of between range
int m = 10, n = 20;
// store the result of factorial
vector<cpp_int> result_fac;
// function for found factorial
result_fac = find_factorial(m, n);
// function for print format
print_format(result_fac);
return 0;
}
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?PHP
// PHP Program to print
// format of factorial
function find_factorial($num1,
$num2)
{
// vector for store
// the result
$vec;
$t = 0;
// variable for store the
// each number factorial
$fac = 1;
// copy of first number
$temp = $num1;
// found first
// number factorial
while (1)
{
if ($temp == 1)
break;
$fac *= $temp;
$temp--;
}
// push the first number
// in result vector
$vec[$t++] = $fac;
// incerement the
// first number
$num1++;
// found the all reaming
// number factorial loop
// is working until all
// required number
// factorial founded
while ($num1 <= $num2)
{
$fac *= $num1;
// store the result
// of factorial
$vec[$t++] = $fac;
// incerement
// the first number
$num1++;
}
// return the result
return ($vec);
}
// function for
// print the result
function print_format($result)
{
// setw() is used for fill
// the blank right is used
// for right justification
// of data
$x = count($result);
$digits = strlen((string)$result[$x - 1]);
for ($i = 0; $i < $x; $i++)
{
echo str_pad($result[$i], ($digits + 1),
" ", STR_PAD_LEFT) . "\n";
}
}
// Driver Code
// number which found
// the factorial
// of between range
$m = 10;
$n = 20;
// store the result
// of factorial
$result_fac;
// function for
// found factorial
$result_fac = find_factorial($m, $n);
// function for
// print format
print_format($result_fac);
// This code is contributed
// by mits
?>
java 描述语言
<script>
// Javascript Program to print
// format of factorial
function find_factorial(num1, num2)
{
// vector for store
// the result
let vec = [];
let t = 0;
// variable for store the
// each number factorial
let fac = 1;
// copy of first number
let temp = num1;
// found first
// number factorial
while (1)
{
if (temp == 1)
break;
fac *= temp;
temp--;
}
// push the first number
// in result vector
vec[t++] = fac;
// incerement the
// first number
num1++;
// found the all reaming
// number factorial loop
// is working until all
// required number
// factorial founded
while (num1 <= num2)
{
fac *= num1;
// store the result
// of factorial
vec[t++] = fac;
// incerement
// the first number
num1++;
}
// return the result
return (vec);
}
// function for
// print the result
function print_format(result)
{
// setw() is used for fill
// the blank right is used
// for right justification
// of data
let x = result.length;
let digits = String(result[x - 1]).length;
for (let i = 0; i < x; i++)
{
result[i] = new Array(x - i).fill(" ").join(" ") +
result[i];
document.write(String(result[i]) + "<br>");
}
}
// Driver Code
// number which found
// the factorial
// of between range
let m = 10;
let n = 20;
// store the result
// of factorial
let result_fac;
// function for
// found factorial
result_fac = find_factorial(m, n);
// function for
// print format
print_format(result_fac);
// This code is contributed
// by gfgking
</script>
输出:
3628800
39916800
479001600
6227020800
87178291200
1307674368000
20922789888000
355687428096000
6402373705728000
121645100408832000
2432902008176640000
版权属于:月萌API www.moonapi.com,转载请注明出处