10.5注意输出的范围是否爆了

题干:众所周知, 铁子哥是一个十分讨厌数学的人。今天铁子哥遇到了一道简单的数学题。题目是给出一个多项式

(ax+b)(cx+d)(ex+f)

要求把这个多项式展开。由于铁子哥十分讨厌数学,所以请聪明机智的你帮铁子哥解决问题。

输入格式:

每个测试样例为包含六个整数 a,b,c,d,e,f(−10000≤a,b,c,d,e,f≤10000)

输出格式:

每组数据输出一行答案,包含4个整数,分别对应 x3x2 , x1 , x0 的系数。每个数字以空格分隔,行末没有空格。

最开始我想这也太简单了,不就是数学的公式展开式吗?有手就行,就噌噌噌敲下了代码

#include<iostream>
using namespace std;
int main(){
    int  a,b,c,d,e,f;
    cin>>a>>b>>c>>d>>e>>f;
    cout<<a*c*e<<" "<<a*c*f+c*e*b+a*e*d<<" "<<a*d*f+c*b*f+e*b*d<<" "<<b*d*f<<endl;
    return 0;
}

兴致勃勃的去提交,结果

只有部分正确,让我百思不得其解,还以为是我展开出错,就有反复算了好几遍,带入了多组常见数据,都可以通过。

只能求救于舍友,才知道是爆了int的范围,题目中10000^3是超出了2^31-1的;后来改成了long long就对了

总结:在这之前我一直以为只考虑输入的范围和定义的范围是否一致,不用管输出是多少,这次我知道了,输出的值也要符合定义的范围

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:58
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务