比赛 20120718 评测结果 AAAATTTTTT
题目名称 最大公约数和 最终得分 40
用户昵称 Citron酱 运行时间 0.063 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2012-07-18 09:53:10
显示代码纯文本
#include <cstdio>
#include <cmath>

#define I_F "gcdsum.in"
#define O_F "gcdsum.out"

unsigned long n;
unsigned long ans=0;

void Input();
unsigned long gcd(const unsigned long&, const unsigned long&);
void Search();
void Output();

int main()
{
	Input();
	Search();
	Output();
	return 0;
}

void Input()
{
	freopen(I_F,"r",stdin);
	scanf("%ld",&n);
}

void Search()
{
	for (unsigned long i=n; i>=1; --i)
		ans+=gcd(n,i);
}

unsigned long gcd(const unsigned long &a, const unsigned long &b)
{
	if (a==b)
		return a;
	if (a==0)
		return b;
	if (b==0)
		return a;
	if (a<b)
		return gcd(a,b%a);
	else
		return gcd(b,a%b);
}

void Output()
{
	freopen(O_F,"w",stdout);
	printf("%ld\n",ans);
}