我试图找到大数的阶乘
我输入t个测试用例
每种情况下都有一个数字,我试图找到它的阶乘
我将阶乘的数字存储在向量中(动态数组)
每次乘以递减的n值
功能显示:显示矢量v中的所有数字
#include <iostream>
#include <vector>
using namespace std;
void display(vector<int> v)
{
for(int x : v)
{
cout << x;
}
cout << endl;
}
vector <int> factorial(int n)
{
vector <int>v;
if(n > 9)
{
int n1 = n;
int r;
while(n1 != 0)
{
r = n1 % 10;
n /= 10;
v.insert(v.begin(), r);
}
}
else
{
v.push_back(n);
}
--n;
int pdt;
int carry = 0;
int digit;
while(n != 1)
{
for(int i = v.size() - 1; i >= 0; --i)
{
pdt = v[i] * n + carry;
carry = pdt / 10;
digit = pdt % 10;
v.insert(v.begin() + i, digit);
// display(v);
}
if(carry != 0)
{
if(carry > 9)
{
int n1 = n;
int r;
while(n1 != 0)
{
r = n1 % 10;
n /= 10;
v.insert(v.begin(), r);
}
}
else
{
v.insert(v.begin(), carry);
}
}
carry = 0;
--n;
}
return v;
}
int main()
{
int t;
cin >> t;
while(t--)
{
int n;
cin >>n;
vector <int> v;
v = factorial(n);
display(v);
}
}
n=5的输出
1264221101505
代码中有几个问题。最主要的一点是,电流矢量永远不会被修改:每次找到一个新的数字,它就会被插入。还存在使用一个变量而不是另一个变量的问题。
此外,使用v[0]
对应于LSB而不是MSB的约定可以大大简化代码。
还可以通过避免无用的测试来简化代码,如if(n
这是一个工作代码:
#include <iostream>
#include <vector>
void display (std::vector<int> &v) {
for (int i = v.size() -1 ; i >= 0; --i) {
std::cout << v[i];
}
std::cout << "\n";
}
std::vector<int> factorial (int n) {
std::vector<int> v;
v.push_back(1);
while (n != 1) {
int carry = 0;
for (int i = 0; i < v.size(); ++i) {
int pdt = v[i] * n + carry;
carry = pdt / 10;
v[i] = pdt % 10;
}
while (carry != 0) {
int r = carry % 10;
carry /= 10;
v.push_back(r);
}
--n;
}
return v;
}
int main() {
int t;
std::cin >> t;
while (t--) {
int n;
std::cin >> n;
auto v = factorial(n);
display(v);
}
}
问题内容: 我正在使用Python编写一些加密算法,但是我以前从未使用过Python。 首先,看一下这段代码,然后我将解释这个问题, x和y的值为, 我不明白代码的第三行。为了理解第三行,我不得不研究函数,我遇到了这个问题, zip函数帮助元组 根据这个问题的答案,代码, 将输出, 但是当我尝试打印时, 我得到这个输出, 为什么我的输出与原始输出不同? 问题答案: 在Python 3中返回一个迭代
下面是一个小代码,我正试图计算softmax。它适用于单个阵列。但是如果数量更大,比如1000等,就会爆炸 我收到一个错误 运行时警告: 在 exp 中遇到溢出 运行你的代码 softmax1 = np.exp(x)/np.sum(np.exp(x))
我试图根据用户使用calandar类输入的日期来确定一天是否是周末。但是当我打印出当天的值时,我得到了不正确的输出。 这是我的代码: 但是输出
我正在spoj平台上解决任务-计算阶乘中的位数。我找到了Kamenetsky公式并实现了它: 首先,我使用了注释代码(流),因为我认为它比实际代码(没有注释)慢,所以我做了更改,但仍然超过了时间限制。我怎样才能更快? 示例输入为(第一行是测试数): 和预期产出:
我正在尝试通过使用if else条件在我的代码中的textbox上添加验证 我在textbox上添加了focusListener,当我从textbox中删除焦点时,它将检查条件 我还在chekbox旁边创建了一个标签,它将根据条件显示文本 如果textbox中的文本不等于“Hi”,则应在textbox旁边的标签中打印“Hello 否则应打印“再见” 请帮忙
我试图计算整数范围的阶乘(2 然而,上面的print语句给出的值=0。事实上,对于所有n