当前位置:首页 > 题解目录 > 正文内容

【题解】真分数(2019青岛市程序设计竞赛)

亿万年的星光5年前 (2021-04-16)题解目录4554

【描述】

真分数,指的是分子比分母小的分数,真分数的分数值小于1。

给出n个正整数,任取两个数分别作为分子和分母组成真分数。

求能组成多少不同值的真分数。

【输入】

第一行是一个正整数n。

第二行是n个不同的正整数ai,相邻两个整数之间用单个空格隔开。

【输出】

一个整数,即最简真分数组合的个数。

【样例输入输出】

fraction.in

fraction.out

4

1 2 3 4

5

 

    样例说明:共组成6个真分数:1/2,1/3,1/4,2/3,2/4,3/4。

但是这6个真分数有5个不同的值:1/2,1/3,1/4,2/3,3/4。因为1/2和2/4的值相同.

【数据范围】

100%的数据:1<=ai<=1000,n<=600。

【来源】

2019年青岛市程序设计竞赛试题(初中组)1T


【题目分析】

  • 题目比较简单,模拟法求解即可 

  • 题目保证输入的数据不同,也就是不存在1/1这样的数

  • 可以先把数据排序,然后进行组合。

  • 对于组合后的数据如果存在重复的进行筛选即可

  • 筛选的过程可以用最大公约数和桶排的方法进行筛选


【参考答案】

#include<cstdio>
#include<algorithm> 
using namespace std;
int fz[601],fm[601]; //分子和分母
int n;//
int flagfz[601],flagfm[601]; //标记数组
int devisor; //最大公约数 
//求最大公约数 
int gcd(int a,int b)
{
    if(b==0)
        return a;
    return gcd(b,a%b);
} 
int main()
{
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&fz[i]);
		fm[i]=fz[i];
	}
	sort(fz,fz+n);
	sort(fm,fm+n); //分子分母排序 
	//处理数据
	int k=0,q=0; 
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			devisor=gcd(fz[i],fm[j]);
			//printf("%d /%d\n",fz[i],fm[j]);
			flagfz[k]=fz[i]/devisor;
			flagfm[k]=fm[j]/devisor;//约分 
			printf("%d/%d\n",flagfz[k],flagfm[k]);
			//约分后的数据看看以前有没有出现过
			for(int p=0;p<k;p++){
				if(flagfz[p]==flagfz[k] && flagfm[p]==flagfm[k])	
				q++; //找到重复的数据 
			}
			k++; //计数器加1 
		} 
	} 
	printf("%d",k-q); 
	return 0; 
}





    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】游戏

    【题目描述】上了半天的物理数学课,大家的脑子有点转不动了,下午的课表似乎看透了同学们的 心思,第一节就安排了体育课,CZ 中学的课表真是太有爱了,赞一个!午间休息后,文体 委员小 S 喊大家到教室外的...

    【题解】摘花生问题

    【题解】摘花生问题

    【题目描述】Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过...

    【题解】电缆线(2019青岛市程序设计竞赛)

    【问题描述】在郊区有N座通信基站,P条双向电缆,第 i 条电缆连接基站 A_i 和 B_i。特别地,1号基站是通信公司的总站,N号基站位于一座农场中。现在,农场主希望对通信线路进行升级,其中升级第 i...

    【题解】宴会

    【题目描述】今人不见古时月,今月曾经照古人。梦回长安,大唐风华,十里长安花,一日看尽。 唐长安城是当时世界上规模最大、建筑最宏伟、规划布局最为规范化的一座都城。其营建 制度规划布局的特点是规...

    【题解】电池的寿命

    【题目描述】小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电。为了保证能够长时间玩游戏,他买了很多5号电池,这些电池的生产商不同,质量也有差异,因而使用寿命也有所不同,有的能使用5个小时,有的可...

    【题解】最大数问题

    【题目描述】输入若干个整数。输出其中的最大数【输入描述】若干个整数。【输出描述】其中的最大数。【样例输入】1 2 5 7 8 6 1&nbs...