sns网站建设哪家公司好,烟台网站推广排名,成品ppt的网站免费观看,中国冶金建设协会网站一、链接
爱你一生一世
二、题目
题目描述
在2013年1月4日#xff0c;这个“爱你一生一世”的特别日子#xff0c;男生都想向自己的喜欢的女生表达爱意。 你准备在该死的C语言考试后#xff0c;去向她#xff08;或者他#xff1f;#xff09;告白。告白怎么能缺了礼…一、链接
爱你一生一世
二、题目
题目描述
在2013年1月4日这个“爱你一生一世”的特别日子男生都想向自己的喜欢的女生表达爱意。 你准备在该死的C语言考试后去向她或者他告白。告白怎么能缺了礼物了 经过前期的情报收集你了解到她喜欢的一些礼物但是可能因为消息的不准确其中有些 礼物并不是她喜欢。为了保险你准备从其中挑选两件不同的礼物请问至少有一件礼物她 会喜欢的概率。
输入
第一行是一个整数K表示样例的个数。 以后每行两个整数N(2≤N≤10,000),表示礼物的个数和M(0 ≤ M ≤ N)表示不喜欢的礼物个数。
输出
输出每个样例的结果如果概率是0或者1输出01其他情况输出分数形式a/b,保证a和b互质。
样例输入
3
4 0
4 2
4 4
样例输出
1
5/6
0
三、题意
给定多件礼物已知有多少件不喜欢从所有礼物中选择两件不同的礼物问至少有一件喜欢的概率并且需要用分数的形式输出答案
四、代码
c代码
#includeiostreamusing namespace std;int gcd(int a,int b)
{return b0?gcd(b,a%b):a;
}int main()
{int t;scanf(%d,t);while(t--){int a,b;scanf(%d%d,a,b);//至少有一件喜欢的概率是1-p1//p1:选中的两件都不喜欢//第二个样例4 2//c22/c42 表示两件礼物都不喜欢1/6int upb*(b-1),downa*(a-1);//同时除以2约掉了//int ans(down-up)/down;显然不能这么算updown-up;int kgcd(up,down);up/k;down/k;if(up0) printf(0\n);else if(up1down1) printf(1\n);else printf(%d/%d\n,up,down);}return 0;
}
c语言代码
#includestdio.hint gcd(int a,int b)
{return b0?gcd(b,a%b):a;
}int main()
{int t;scanf(%d,t);while(t--){int x,y;scanf(%d%d,x,y);int upy*(y-1),downx*(x-1);updown-up;int kgcd(up,down);up/k;down/k;if(up0) printf(0\n);else if(up1down1) printf(1\n);else printf(%d/%d\n,up,down);}return 0;
} 五、总结
1.关于最大公约数函数gcd可以参考这一篇博客最小公倍数题解湘大oj1075 辗转相除法
使用辗转相除法的题目推荐oj1075,oj1392
2.逆向思维至少有一件喜欢的反面是一件都不喜欢用1减去一件都不喜欢的概率就是我们要求的结果
3.一件都不喜欢假设所有礼物的件数是x,不喜欢的礼物件数是y,从不喜欢的礼物中挑选两件,从所有礼物中挑选两件,把这两个数相除就是一件都不喜欢的概率但是注意这两个数字是整型数字不可以直接相除直接相除会向下取整损失精度
4.上面两个数字都有一个除以2的步骤分子分母同时乘以2可以抵消分子变成y*(y-1),分母变成x*(x-1),用1减去这个分式等于{x*(x-1)-y*(y-1)}/{x*(x-1)}
5.到目前为止只有没有计算分式的数值就没有损失精度我们只是知道是这样表示但是没有用计算机把这个式子表示出来用一个变量up表示分子存储x*(x-1)-y*(y-1),用一个变量down表示分母存储x*(x-1),求分子分母的最大公约数分子分母同时除以最大公约数
int kgcd(up,down);
up/k;
down/k;
6.然后进行条件判断就可以以分式形式输出答案了事实上一直没有计算准确值
7.需要以分式输出就联想最大公约数
六、精美图片