如果你WA#5,95pts
查看原帖
如果你WA#5,95pts
324562
GoodCoder666楼主2023/5/21 20:07

是不是没开long long!!

注意:输入数据和欧拉函数的计算可以直接使用unsigned int,但是答案必须long long!!

实在懒得想就直接全long long好了……

错误范例:

#include <cstdio>
#define uint32 unsigned
using namespace std;

inline uint32 phi(uint32 n)
{
	uint32 res = n;
	for(uint32 i=2; i<=n/i; i++)
		if(n % i == 0)
		{
			(res /= i) *= i - 1;
			while(n % i == 0) n /= i;
		}
	if(n > 1) (res /= n) *= n - 1;
	return res;
}

int main()
{
	uint32 n, ans = 0;
	scanf("%u", &n);
	for(uint32 i=1; i<=n/i; i++)
		if(n % i == 0)
		{
			uint32 t = n / i;
			ans += i * phi(t);
			if(i != t)
				ans += t * phi(i);
		}
	printf("%u\n", ans);
	return 0;
}

Hack 数据:

4294967294

正确输出:

12884901879

错误输出:

4294967287
2023/5/21 20:07
加载中...