hdu 2674(余数性质)】的更多相关文章

N!Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4728    Accepted Submission(s): 2490 Problem Description WhereIsHeroFrom:             Zty, what are you doing ?Zty:                       …
题意: 输入正整数n和k(范围均为1e9),求∑(k mod i),i从1~n 解法: 首先这道题直接暴力亲测会超时. 之后我们写几组数据之后可以发现当k/i的商相同的时候他们的余数成一个等差数列,而且数列首相是q,公差是p,项的个数是余数/商. 具体写法网上面有分情况讨论的,但是较为繁琐,这里LRJ的板子感觉写法就很精炼. 我们从左到右依次枚举每一项i(核心思想是减少i的枚举个数),计算出k除以这个数的商和余数, 如果这个商是0,说明此时的i已经大于k:如果不为0(即大于0),即来计算等差的数…
题目 //行开始看被吓一跳,那么大,没有头绪, //看了解题报告,发现这是一道大大大的水题,,,,,//2009 = 7 * 7 * 41//对2009分解,看它有哪些质因子,它最大的质因子是41,那么对于大于等于41的数,直接输出0就行了. #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main() { int n; while(scanf("…
继续数论.. Problem Description WhereIsHeroFrom:            Zty,what are you doing ? Zty:                                    Iwant to calculate N!...... WhereIsHeroFrom:            Soeasy! How big N is ? Zty:                                    1<=N <=100…
这道题有个小技巧,就是既然是n!,那么对2009求余,只要大于2009!,那么一定是0,在仔细想想会发现,根本到不了2009,只要到2009的最大质因数就行了,为什么呢?因为最大质因数是最大的一个不能被2009整除的,2009的最大质因数是41,也就是只要大于41的阶乘的都可以整除2009,因为41的阶乘可以整除,42! = 42 * 41!,所以大于41的全部为0,那么这个题就简单了 代码如下: #include<iostream> #include <cstdio> using…
题目大意:输入一个整数n,输出N! mod 2009 的结果. 解题思路: 1)任意数  n = ( n / 2009) * 2009 + n % 2009 2)40!  mod 2009  等于 245 3)41!  mod 2009 等于 0 4) 对于小于 2009 的数来说   n == n % 2009 代码如下: /* * 2674_1.cpp * * Created on: 2013年9月1日 * Author: Administrator */ #include <stdio.h…
一开始以为有循环节,输出了前100项发现n>40都是0.因此,水题.... #include<cstdio> ]; ; int main() { a[]=; ; i<=; i++) a[i]=(i*a[i-])%MOD; long long n; while(~scanf("%lld",&n)) { ) printf("%lld\n",a[n]); else printf("0\n"); } ; }…
0 <= N<=10^9 看到这个数据范围知道常规方法肯定做不出来. 不过一想想既然是mod2009,是不是只要其中含有一个2009,那么其结果一定是0了呢 说了这里思路,就是看什么时候出现2009这个因式,41!中  41*7*7:也就是说n>40的结果都是0了 贴代码了 #include<iostream> #include<cstdio> using namespace std; ; int num[qq]; int main() { num[]=; ;i&…
WhereIsHeroFrom: Zty, what are you doing ? Zty: I want to calculate N!.. WhereIsHeroFrom: So easy! How big N is ? Zty: 1 <=N <=1000000000000000000000000000000000000000000000- WhereIsHeroFrom: Oh! You must be crazy! Are you Fa Shao? Zty: No. I haven'…
题意:略过 分析:用m个数字组成一个能够被n整除的c进制数的最小值,实际上本题的关键就在于这个最小值上.  首先确定我们的思路是从小到大寻找.先查看一位数,即查看着m个数字是否能被n整除:若不能,就查看任意可能的两位数组合...可是如此一来,预算量太大.于是我们考虑是否存在冗余量.  已知A,B两个数(A<B),A%n==x,B%n==x,我们称其为同余,那么以它们为基础的相同变换(从一位数到两位数):A*c+C,B*c+C,这两个数同样同余,(A*c+C)%n==((A*c)%n+C%n)%n…