问题标题: 酷町堂:7772 奇怪的阶乘

0
0
已解决
张铭睿
张铭睿
中级光能
中级光能

题目链接: 酷町堂:7772

7772   奇怪的阶乘

经验值:800 时间限制:1000毫秒 内存限制:128MB

题目描述 De**ion

现在这里有n组数字,每组数字中有三个数字a,b,c。对于这三个数字,你需要判断作为边长是否能够组成一个三角形。

如果能够组成一个三角形,那么需要输出(a+b-c)和(a+c-b)以及(b+c-a) 的阶乘。

否则,输出数字0。

输入描述 Input De**ion

n+1行
第一行,一个正整数n,表示有n组数字(1<=n<=20)
接下来n行,每行三个正整数。

输出描述 Output De**ion

n行。
每行:如果三个数字能够组成三角形,则输出三个阶乘的结果,以空格隔开。否则,输出一个数字0。

样例输入 Sample Input

3 3 4 5 1 8 18 1 5 9

样例输出 Sample Output

2 24 720 0 0

0分代码

#include<iostream>

using namespace std;

int main(){

int n;

cin>>n;

int a,b,c;

for(int i=1;i<=n;i++){

cin>>a>>b>>c;

}

for(int i=1;i<=n;i++){

if(a+b>=c&&a+c>=b&&c+b>=c){

cout<<i*(a+b-c)<<" "<<i*(a+c-b)<<" "<<i*(b+c-a)<<"\n";

}else{

cout<<0<<"\n";

}

}

return 0;

}


0
已采纳
孔德怡
孔德怡
新手光能
新手光能

首先定义long long n,a,b,c,s=1,s2=1,s3=1;
然后
数入>>n;
for(int i=1;i<=n;i++){
数入>>a>>b>>c;
如果((a+b)>c&&(b+c)>a&&(a+c)>b){
for循环 for(int j=1;j<=a+b-c;j++){
s*=j;
}
for(int k=1;k<=a+c-b;k++){
s2*=k;
}
for(int l=1;l<=b+c-a;l++){
s3*=l;
}
然后输出<<s<<’ ‘<<s2<<’ '<<s3<<endl;
s=1;
s2=1;
s3=1;
}所以else{
输出<<0<<endl;
望采纳,谢谢

0
王耀森
王耀森
中级光能
中级光能

输出有问题,要用循环分别求出阶乘,然后再输出

另外所有变量用long long 定义,不然只有20分

我要回答