版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址
http://blog.csdn.net/lzuacm。
HDUoj 5391 - Zball in Tina Town
在线提交:
http://acm.hdu.edu.cn/showproblem.php?pid=5391
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 2790 Accepted Submission(s): 1309
题目大意:
Tina Town 是一个善良友好的地方, 这里的每一个人都互相关心。
Tina有一个球,它的名字叫zball。zball很神奇,它每天会变大一些。在第一天,它和原始大小一样。 在第二天,它的大小将成为第一天的2倍。 在第n天,它的大小将为第(n-1)天大小的n倍。Tina想知道,zball在第n-1天时的大小对n取模是多少呢?
思路:
陶哲轩在他的书Solving mathematical problems 中提到威尔逊定理
is prime.
首先,来回忆一下阶乘的定义:
可得出结论: 存在a, b [1, m] 使得 能整除m!
假定 ,
原问题可分类如下:
- n是质数,则由威尔逊定理知:
. n是合数(composite),且n不能表示为质数的平方,则 使得 ,即
n是合数,且n可表示成质数p的平方,而且 p > , 即
此时的目标是寻找a, b使得 ,不妨假设 a = , b = .
, 则n的约数有 .
下面用反证法来证明为何a、b均与p线性相关,如果a( )与p线性无关,则 ,而 ,矛盾。同理假设b与p线性无关也会出现同样的矛盾,因此a、b均与p线性相关。
让a尽量小, 则 , 令 , 于是b可表示为 .
解上述不等式可得 , 容易分析得f(t)是递增函数。
当 时, ,即 , 于是 .
而当 时,p的解集是上述区间的子集, 因此p的解集可取两者中范围较大者, 即 。
由于 , 而 , 因而 .
因此
故 (n-1)! (mod n) = 0n是合数,且n可表示成质数p的平方,而且 p < , 即 p = 2, n=4.
此时,无法找到满足条件的a和b, .
已AC代码:
using System;
namespace hdoj_zball
{
public class Solution
{
public int Mod(int n)
{
if (IsPrime(n))
return n - 1;
if (n == 4)
return 2;
return 0;
}
public bool IsPrime(int m)
{
if (m < 2)
return false;
for (int i = 2; i * i <= m; i++)
{
if (m % i == 0)
return false;
}
return true;
}
}
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
while (n-- > 0)
{
string[] s = Console.ReadLine().Split();
int num = int.Parse(s[0]);
Solution sol = new Solution();
Console.WriteLine(sol.Mod(num));
}
}
}
}
Rank (C#):
Exe.Time | Exe.Memory |
---|---|
1185ms | 26908K |
Reference:
elementary number theory - If
is composite, then
divides
. - Mathematics Stack Exchange
https://math.stackexchange.com/questions/164852/if-n-ne-4-is-composite-then-n-divides-n-1