lzy的数论挑战

故事背景
lzy最近迷恋数论!刚刚学完了最大公约数gcd,然后lzy就和hh进行了世纪数论决斗。

题目描述
现在轮到hh进攻了,hh出题如下:

任意给一个整数n, 那么整数 n 和 a^1999+b^1999+c^1999(满足a+b+c=0,且a,b,c都是整数)的固定最大公约数是多少?

(也就是说,无论abc取什么,都存在这样一个最大公约数)。

输入输出格式
输入:一行,一个整数,n。

输出:一行,一个整数,固定最大公约数。

输入输出样例
输入样例: 10

输出样例:2

数据范围
对于20%的数据, |n|≤10|n|≤10
对于80%的数据,|n|≤5000|n|≤5000
对于100%的数据,|n|≤1×1e9


据涵神说这题有坑,但他自己出的题,这个锅先不管了。
简略地证明一下吧,其实我不是很明确:

对于一个数 x,我们先考虑它 mod 2的情况,可以显然得, x^1999 ≡ x ( mod 2 )。

再考虑它 mod 3,假设 x mod 3=0,显然 x^1999 mod 3=0;
假设 x mod 3=1,取模在乘法意义下是直接成立的,所以可将 x^1999 mod 3 展开为 [( x mod 3 ) * ( x mod 3 )……* ( x mod 3 )] mod 3 = 1^1999 mod 3 = 1。故 x^1999 mod 3=1。
假设 x mod 3=2。如上所述,x^1999 mod 3 = [( x mod 3 ) * ( x mod 3 )……* ( x mod 3 )] mod 3 = 2^1999 mod 3。我们找一下规律: 2^1 mod 3 = 2,2^2 mod 3 = 1,2^3 mod 3 = 2……数学归纳法,2的奇次幂 mod 3 均为 2,故 x^1999 mod 3=2。

综上所述, x^1999 ≡ x ( mod 3 )。
回到原题,我们可以知道 a^1999+b^1999+c^1999 ≡ a+b+c ( mod 2 ) ; a^1999+b^1999+c^1999 ≡ a+b+c ( mod 3 )。
题目还告诉我们,a+b+c = 0,也就是说,2 | a^1999+b^1999+c^1999;3 | a^1999+b^1999+c^1999;那么亦有 6 | a^1999+b^1999+c^1999。

至于为什么别的数不可以呢,我也不知道啊。
迟到的补充:正是因为这一点,所以这道题是存在纰漏的。即:我们无法确定其它数不是正解。

涵神太强了。!

int main()
{
    read(n);
    if(!(n&1)&&!(n%3)) printf("6");
    else if(!(n&1)) printf("2");
    else if(!(n%3)) printf("3");
    else printf("1");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/hfl030/article/details/79934392