每日刷题(九十五)
蓝桥杯第十一届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的可能性!