题解 P1888 【三角函数】
题目链接
题目数据有点特殊,所以数组不用开太大!!!
那么本题思路就是:先输入,再排序,最后找最大值和最小值的最大公约数约分、
最后输出。
直接上代码。
#include<bits/stdc++.h> using namespace std; long long a[3]//数组3个就好; long long q,w;//用来储存约分后的值 long long gcd(long long a,long long b)//注意点数据范围,第一次就这么被坑了 { return b==0?a:gcd(b,a%b);//辗转消除,另一种表达形式,三目运算符 } int main() { for(int i=0;i<3;i++)//循环输入 { cin>>a[i]; } sort(a,a+3);//排序函数 q=a[0]/gcd(a[0],a[2]);//这是最小的数 w=a[2]/gcd(a[0],a[2]);//这是最大的数,也就是说,斜边 cout<<q<<"/"<<w;//直接输出 return 0;//程序拜拜 }
其实新手要是练排序的话不用sort。
排序代码如下
for(int j=0;j<2;j++) for(int i=1;i<3;i++) if(a[i]<=a[i-1]) { long long p=a[i]; a[i]=a[i-1]; a[i-1]=p; //cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;//这是测试数据。 }
好的就这样吧。