蓝桥杯2020第十一届C语言B组省赛习题题解——习题B.既约分数

每日刷题(九十五)

蓝桥杯第十一届C语言B组省赛习题B:既约分数(5’)

在这里插入图片描述
C++代码:

#include<iostream>
using namespace std;
int gcd(int a, int b)
{
    
    
	return b ? gcd(b, a % b) : a;
}

int main()
{
    
    
	int sum = 0;
	//分子分母相同的情况
	sum = 1;
	
	int sum2 = 0;
	//分子小于分母的情况
	for(int i = 1; i < 2020; i++)
	{
    
    
		for(int j = i + 1; j <= 2020; j++)
		{
    
    
			if(gcd(i, j) == 1)
			{
    
    
				sum2++;
			}
		}
	} 
	sum += sum2 * 2;
	cout << sum << endl;
	return 0;
}

运行结果:
在这里插入图片描述
所以答案是:
2481215

注意!有些人会把分母和分子相同的算成不同的,比方说1/1,2/2,3/3,…,2020/2020,认为结果为1的既约分数有2020个,所以答案和标准答案不同。要知道既然题目说了它是分数,那么最多就考虑进1次为1的可能性!

如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!

猜你喜欢

转载自blog.csdn.net/qq_44631615/article/details/113802835