2012北大计算机研究生机试----最简真分数
2013-08-27 06:36
225 查看
最简真分数
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:883
解决:357
题目描述:
给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合。
输入:
输入有多组,每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000。
当n=0时,程序结束,不需要处理这组数据。
输出:
每行输出最简真分数组合的个数。
样例输入:
样例输出:
注意题目不是问把组合成的分数都化为最简真分数后,不重复的真分数共有几个。不是这个意思,而是问直接挑两个数过来组合。直接就是最简真分数的组合数有几个。
关于gcd(公约数):
早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法——辗转相除法。辗转相除法使用到的原理很聪明也很简单,假设用f(x,
y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x,
y)= f(y, x % y)(y > 0),如此便可把原问题转化为求两个更小数的最大公约数,直到其中一个数为0,剩下的另外一个数就是两者最大的公约数。 ------------------资料来源“百度百科”
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:883
解决:357
题目描述:
给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合。
输入:
输入有多组,每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000。
当n=0时,程序结束,不需要处理这组数据。
输出:
每行输出最简真分数组合的个数。
样例输入:
7 3 5 7 9 11 13 15 3 2 4 5 0
样例输出:
17 2
注意题目不是问把组合成的分数都化为最简真分数后,不重复的真分数共有几个。不是这个意思,而是问直接挑两个数过来组合。直接就是最简真分数的组合数有几个。
#include <iostream> #include <algorithm> using namespace std; #define MAX 1005 int num[MAX]; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int n; while(cin>>n) { if(!n) break; for(int i=0;i<n;i++) cin>>num[i]; sort(num,num+n); int count=0; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(gcd(num[i],num[j])==1) count++; cout<<count<<endl; } return 0; }
关于gcd(公约数):
早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法——辗转相除法。辗转相除法使用到的原理很聪明也很简单,假设用f(x,
y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x,
y)= f(y, x % y)(y > 0),如此便可把原问题转化为求两个更小数的最大公约数,直到其中一个数为0,剩下的另外一个数就是两者最大的公约数。 ------------------资料来源“百度百科”
相关文章推荐
- 2012 HIT计算机研究生机试真题
- 蓝桥杯——2010 吉大计算机研究生机试真题(2017.2.5)
- 蓝桥杯——计算机研究生机试真题(2017.2.15)
- 蓝桥杯——计算机研究生机试真题(2017.2.17)
- 题目1022:游船出租 2007年浙江大学计算机及软件工程研究生机试真题
- 题目1014:排名 2005年浙江大学计算机及软件工程研究生机试真题
- 蓝桥杯——计算机研究生机试真题(2017.2.28)
- 2011年上海交通大学计算机研究生机试真题
- 题目1118:数制转换(2008年北京大学图形实验室计算机研究生机试真题)
- 题目1207:质因数的个数(2007年清华大学计算机研究生机试真题)
- 蓝桥杯——2014 HIT计算机研究生机试真题(2017.2.2)
- 蓝桥杯——计算机研究生机试真题改编+情景拓展(2017.2.9)
- 九度题目1014:排名 && 2005年浙江大学计算机及软件工程研究生机试真题
- 九度题目1003:A+B && 2010年浙江大学计算机及软件工程研究生机试真题
- 九度题目1020:最小长方形 2007年浙江大学计算机及软件工程研究生机试真题
- 题目1024:畅通工程 2007年浙江大学计算机及软件工程研究生机试真题
- 题目1051:数字阶梯求和 2010年哈尔滨工业大学计算机研究生机试真题
- 2001年清华大学计算机研究生机试真题(第I套)之二
- 2010年浙江大学计算机及软件工程研究生机试真题之三
- 毕业bg (2008年浙江大学计算机及软件工程研究生机试真题)