为什么给定的代码不适用于所有测试用例?为什么当输入为 7786 时它不起作用?
why the given code doesn't work for all test cases?Why it doesn't work when input is 7786?
#include <iostream>
#include<math.h>
using namespace std;
int main() {
//code
int t,n,s;
cin>>t;//no. of test cases
for(int k=1;k<=t;k++)
{ cin>>n;s=0;//n:input,s:sum
for(int i=1;i<=n*2;i++)
{
if(i%2==0)
s=s+(i*i);
}
cout<<s<<endl;
}
return 0;
}
原题:
战俘之力 |偶数
给定一个整数 N,您的任务是找到前 N 个自然数的平方和。
例子:
输入 : 3
输出 : 56 2 2+4 2 + 62 =56
输入 : 8
输出 : 816
2 2 + 4 2 + 6 2 + 8 2 + 10 2 + 12 2+14 2 + 162
输入:
输入的第一行包含一个整数 T,表示测试用例的数量。然后是 T 测试用例。每个测试用例的唯一行包含一个整数 N。
输出:
对于每个测试用例,在新行上输出所需的 anser。 约束:
1<=T<=100
N<=104
例: 输入:
3
2
5
9
输出:
20
220
1140
**ERROR:**
Wrong Answer. !!!Wrong Answer
可能您的代码无法在多个测试用例 (TC( 中正常工作。
代码失败的第一个测试用例:
输入:
7786
其正确输出为:
629456320324
代码的输出为:
-1903872188
s
的数据类型不够大。您可以指定您想要一个 64 位 int(应该足够大(:
#include <iostream>
int main()
{
int n = 7786;
uint64_t s = 0; // note the type
for(int i = 1; i <= n*2; ++i)
{
if(i%2 == 0)
s += i*i;
}
std::cout << s << std::endl; // prints 629456320324
}
这是一个演示。
对总和使用更大的无符号整数类型(使用有符号整数类型没有意义(,只需编写一个单独的函数来计算总和。
下面是一个演示程序,展示了如何编写函数。
#include <iostream>
unsigned long long even_square_sum( unsigned int n )
{
unsigned long long sum = 0;
for ( unsigned int i = 0; i < n; i++ )
{
unsigned long long int even = 2 * ( i + 1 );
sum += even * even;
}
return sum;
}
int main()
{
unsigned int n = 2;
std::cout << n << ": " << even_square_sum( n ) << 'n';
n = 5;
std::cout << n << ": " << even_square_sum( n ) << 'n';
n = 9;
std::cout << n << ": " << even_square_sum( n ) << 'n';
n = 7786;
std::cout << n << ": " << even_square_sum( n ) << 'n';
return 0;
}
程序输出为
2: 20
5: 220
9: 1140
7786: 629456320324
请注意,在诸如此类的情况下使用循环也是没有意义的
for(int i=1;i<=n*2;i++)
^^^^^^
因为循环有许多冗余迭代。
#include <iostream>
#include<math.h>
using namespace std;
int main() {
//code
long int t,n,s;//Using long int removed the error
cin>>t;//no. of test cases
for(int k=1;k<=t;k++)
{ cin>>n;s=0;
for(int i=1;i<=n*2;i++)
{
if(i%2!=0)
s=s+(i*i);
}
cout<<s<<endl;
}
return 0;
}
相关文章:
- 为什么控制台要求输入,即使代码中没有输入
- 为什么线程不接受此输入?
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 为什么当我输入较大的数字时,我的程序会到达文件末尾?
- 为什么我的程序在输入某个形状的面积的测量值后没有结束?
- 为什么这个scanf()的两个不同的输入会给出两个不同的输出?
- 为什么无论输入如何,所有 if-else 语句都会打印?
- 为什么我的输出与输入不同?(C++)
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 为什么输入迭代器在递增后会使自身失效?
- 为什么输入文件中的数字没有进入我的数组 c++?
- 为什么输入流无法识别 Ctrl D 并给出无限循环
- 为什么输入文件的最后一行运行两次?
- 为什么输入流从第二行输入中删除一些字符
- 为什么输入值不同
- 为什么输入时出现错误? "expression: string subscript out of range"
- 为什么输入流跳过 -1 值
- 为什么输入流对象在读完文件后失败