【HDOJ】2802 F(N)

找循环节水题。注意余数大于0。

 1 /* 2802 */
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5
 6 #define MAXN 4018
 7 #define MOD  2009
 8
 9 __int64 a[MAXN+1];
10
11 void init() {
12     __int64 tmp;
13     int i, j, k;
14     bool flag;
15
16     a[0]=0, a[1] = 1, a[2] = 7;
17     for (i=3; i<=MAXN; ++i) {
18         tmp = i%MOD;
19         a[i] = (tmp*tmp*tmp - a[i-1]+MOD)%MOD;
20     }
21 }
22
23 int main() {
24     int n;
25
26     #ifndef ONLINE_JUDGE
27         freopen("data.in", "r", stdin);
28         freopen("data.out", "w", stdout);
29     #endif
30
31     init();
32
33     while (scanf("%d", &n)!=EOF && n) {
34         n %= MAXN;
35         printf("%I64d\n", a[n]);
36     }
37
38     return 0;
39 }
时间: 2024-11-13 08:35:38

【HDOJ】2802 F(N)的相关文章

【HDOJ】4956 Poor Hanamichi

基本数学题一道,看错位数,当成大数减做了,而且还把方向看反了.所求为最接近l的值. 1 #include <cstdio> 2 3 int f(__int64 x) { 4 int i, sum; 5 6 i = sum = 0; 7 while (x) { 8 if (i & 1) 9 sum -= x%10; 10 else 11 sum += x%10; 12 ++i; 13 x/=10; 14 } 15 return sum; 16 } 17 18 int main() { 1

【HDOJ】4704 Sum

数学题.f(n) = 2^(n-1) mod (1e9+7). 1 #include <cstdio> 2 3 #define MAXN 100005 4 5 char buf[MAXN]; 6 __int64 phi = 1e9+6; 7 __int64 mod = 1e9+7; 8 9 __int64 power2(__int64 n) { 10 __int64 ret = 1, base = 2; 11 12 --n; 13 while (n) { 14 if (n & 1) 1

【HDOJ】3789 奥运排序问题

写了个函数指针,这题目很水,但是佷烦. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdlib> 5 using namespace std; 6 7 #define MAXN 305 8 9 typedef struct { 10 int id, g, j; 11 float gp, jp; 12 } count_st; 13 14 typedef

【HDOJ】1198 Farm Irrigation

其实就是并查集,写麻烦了,同样的代码第一次提交wa了,第二次就过了. 1 #include <stdio.h> 2 #include <string.h> 3 4 #define MAXNUM 55 5 #define UP 0 6 #define RIGHT 1 7 #define DOWN 2 8 #define LEFT 3 9 10 char buf[MAXNUM][MAXNUM]; 11 int bin[MAXNUM*MAXNUM]; 12 char visit[MAXN

【HDOJ】2267 How Many People Can Survive

BFS. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 using namespace std; 6 7 #define MAXN 305 8 9 typedef struct node_st { 10 int x, y; 11 node_st() {} 12 node_st(int xx, int yy) { 13 x = xx; y

【HDOJ】1247 Hat’s Words

字典树. 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 #define MAXN 50005 6 #define MAXL 25 7 8 typedef struct Trie { 9 bool f; 10 Trie *next[26]; 11 Trie() { 12 f = false; 13 for (int i=0; i<26; ++i) 14 next[i] = NULL

【HDOJ】2732 Leapin&#39; Lizards

贪心+网络流.对于每个结点,构建入点和出点.对于每一个lizard>0,构建边s->in position of lizard, 容量为1.对于pillar>0, 构建边in position of pillar -> out position of pillar, 容量为number of pillar.若沿四个方向移动距离d可以超过边界,则构建边out position of pillar -> t, 容量为INF:否则, 对于曼哈顿距离l(l>0 and l<

【HDOJ】2451 Simple Addition Expression

递推,但是要注意细节.题目的意思,就是求s(x) = i+(i+1)+(i+2),i<n.该表达中计算过程中CA恒为0(包括中间值)的情况.根据所求可推得.1-10: 31-100: 3*41-1000: 3*4*41-10000: 3*4*4*41-10^n: 3*4^(n-1).并且需要注意,一旦发现某一位大于3,则应立即跳出累加的循环.比如,f(133) = 24,f(143) = 24.同时,单独讨论个位的情况.28行的break处理该种情况. 1 #include <cstdio&g

【HDOJ】1099 Lottery

题意超难懂,实则一道概率论的题目.求P(n).P(n) = n*(1+1/2+1/3+1/4+...+1/n).结果如果可以除尽则表示为整数,否则表示为假分数. 1 #include <cstdio> 2 #include <cstring> 3 4 #define MAXN 25 5 6 __int64 buf[MAXN]; 7 8 __int64 gcd(__int64 a, __int64 b) { 9 if (b == 0) return a; 10 else return