代码给出了荒谬的答案
Code is giving absurd answer
下面的代码段是计算sum(K*((nCk)^2)),对于1<=k<=n,对于n直到10^6,但是对于n>20,程序开始给出荒谬的答案。请帮帮我。我想可能是因为产品无法储存这么大的价值,但是怎么办呢?
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int t;
scanf("%i",&t);
while(t--)
{
int n;
scanf("%i",&n);
double prod=1;
if (n!=1)
{
for(float i=1;i<n;i++)
{
prod = prod * (2+(i/(n-i))) ;
prod = fmod(prod,1000000007.0);
}
prod = prod * n;
}
else prod=1 ;
prod = int(prod)%1000000007;
cout<<prod;
printf("n");
}
return 0;
}
你在做
prod = prod * (2+(i/(n-i))) ;
当(i/(n-1))不是整数并且给出循环小数时,将失去精度。这将导致意想不到的结果。
相关文章:
- 欧拉项目#8答案是大以获得有效答案
- 首要问题的答案让值班员搞错了
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 使用 bfs 解决连接组件问题时得到错误的答案
- 同一对象的"sizeof"的不同答案
- 递归求和任务的错误答案
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 为什么C++程序在太大时返回代码而不是答案?
- 不理解为什么代码没有产生所需的答案
- 为什么我在代码厨师的 CMPRSS 问题中得到 WA(错误答案)?
- 我的程序将 26 个字母转换为 ascII 没有显示正确答案
- 请找出我的代码中的错误,它在提交得到错误答案的同时仍然适用于我的所有测试用例
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- C++ 中 pow() 函数的输出没有给出准确的答案
- 函数从指针 c++ 中获取错误的值并返回错误的答案
- 给出不精确答案的递归Karatsuba算法
- 我的 cout 上有一个奇怪的输出,它把答案放在第一位,然后在我调用它的地方放一个奇怪的输出.我该怎么办?
- SPOJ 问题 ADDREV - 添加反转数字(考虑到我的代码,我得到了一个错误的答案,这很荒谬......
- 代码给出了荒谬的答案