概述
题目描述
小X很喜欢三角形,原因之一是三角形具有稳定性。也就是说,给定三角形的三条边长,它的形状也随之确定了。
现在小X想画一个三条边长都是正整数的三角形,其中两条边的长度分别是a和b,第三条边的长度还没有确定。小X想知道他能画出多少种不同的三角形。
输入
输入数据仅有一行包含两个用空格隔开的正整数,表示a和b。
输出
输出仅一行包含一个正整数,表示其中两条边长分别为a,b的三角形的种类数。
样例输入
2 3
样例输出
3
解释:第三条边的长度可能为2,3,4,共3种。
普通方法:
用循环枚举成立的数(a+b>c,a+c>b,b+c>a)然后累计,最后输出。
(在此省略超时代码)
对不起,时间超限!!!
数学优化:
我们发现,不管数据如何坑,都会满足答案是一个严格递增的序列,所以我们可以枚举左右端点然后相减再加一输出答案。
方法:
左端点为|a-b|+1
右端点为a+b-1
将公式代入程序最后按照上面操作一次,就
评测通过100分!!!
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int left,right;
right=a+b-1;
left=abs(a-b)+1;
printf("%dn",right-left+1);
return 0;
}
是不是非常棒呀?
最后
以上就是儒雅乐曲为你收集整理的小X与三角形(c++)的全部内容,希望文章能够帮你解决小X与三角形(c++)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复