[zoj3629]找规律

题意:a[n] = ([n/1] + [n/2] + ... + [n/n]) & 1 == false,找出a数组的规律来就ok了。

 1 #pragma comment(linker, "/STACK:10240000,10240000")
 2
 3 #include <iostream>
 4 #include <cstdio>
 5 #include <algorithm>
 6 #include <cstdlib>
 7 #include <cstring>
 8 #include <map>
 9 #include <queue>
10 #include <deque>
11 #include <cmath>
12 #include <vector>
13 #include <ctime>
14 #include <cctype>
15 #include <set>
16
17 using namespace std;
18
19 #define mem0(a) memset(a, 0, sizeof(a))
20 #define lson l, m, rt << 1
21 #define rson m + 1, r, rt << 1 | 1
22 #define define_m int m = (l + r) >> 1
23 #define rep(a, b) for (int a = 0; a < b; a++)
24 #define rrep(a, b) for (int a = (b - 1); a >= 0; a--)
25 #define all(a) (a).begin(), (a).end()
26 #define lowbit(x) ((x) & (-(x)))
27 #define constructInt4(name, a, b, c, d) name(int a = 0, int b = 0, int c = 0, int d = 0): a(a), b(b), c(c), d(d) {}
28 #define constructInt3(name, a, b, c) name(int a = 0, int b = 0, int c = 0): a(a), b(b), c(c) {}
29 #define constructInt2(name, a, b) name(int a = 0, int b = 0): a(a), b(b) {}
30 #define pc(a) putchar(a)
31 #define ps(a) printf("%s", a)
32 #define pd(a) printf("%d", a)
33 #define sd(a) scanf("%d", &a)
34
35 typedef double db;
36 typedef long long LL;
37 typedef unsigned long long uLL;
38 typedef pair<int, int> pii;
39 typedef multiset<int> msi;
40 typedef set<int> si;
41 typedef vector<int> vi;
42 typedef map<int, int> mii;
43
44 const int dx[8] = {0, 1, 0, -1, 1, 1, -1, -1};
45 const int dy[8] = {1, 0, -1, 0, -1, 1, 1, -1};
46 const int maxn = 5 * 1e4 + 7;
47 const int maxm = 1e5 + 7;
48 const int minv = 1e7 + 7;
49 const int max_val = 1e6 + 7;
50 const int MD = 1e9 +7;
51 const LL INF = 1e15;
52 const double PI = acos(-1.0);
53 const double eps = 1e-10;
54
55 template<class T> T gcd(T a, T b) { return b == 0? a : gcd(b, a % b); }
56
57 uLL a, b;
58
59 uLL g(LL n) { return n * (2 * n - 1); }
60
61 uLL f(uLL x) {
62     uLL l = 1, r = 0xFFFFFFFF;
63     while (l < r) {
64         uLL m = (l + r) >> 1;
65         if (m * m < x) l = m + 1;
66         else r = m;
67     }
68     uLL n = l, rest = x - (n - 1) * (n - 1), ans = 0;
69     if (n & 1) ans += rest;
70     ans += g(n >> 1);
71     return ans;
72 }
73
74 int main() {
75     //freopen("in.txt", "r", stdin);
76     while (cin >> a >> b) {
77         a++; b++;
78         cout << f(b) - f(a - 1) << endl;
79     }
80     return 0;
81 }

时间: 2024-10-08 00:23:22

[zoj3629]找规律的相关文章

ZOJ3629 Treasure Hunt IV(找规律,推公式)

Treasure Hunt IV Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice is exploring the wonderland, suddenly she fell into a hole, when she woke up, she found there are b - a + 1 treasures labled a from b in front of her. Alice was very excited but

The Cow Lineup_找规律

Description Farmer John's N cows (1 <= N <= 100,000) are lined up in a row.Each cow is labeled with a number in the range 1...K (1 <= K <=10,000) identifying her breed. For example, a line of 14 cows might have these breeds: 1 5 3 2 5 1 3 4 4

UVA - 1646 - Edge Case(找规律)

题意:n(3 <= n <= 10000)个结点组成一个圈,求匹配(即没有公共点的边集)的个数. 找规律为斐波那契的性质,因为数太大所以用的java大数. import java.math.BigInteger; import java.util.Scanner; public class Main{ public static int MAXN = 10000 + 10; public static BigInteger []c = new BigInteger[MAXN]; public

【55测试】【字符串】【栈】【找规律】

集训第二天,额,考崩了. 第一题 hao 大意:(这个名字就不要在意了,其实是祖玛游戏) 模拟祖玛游戏的模式,给一个'A'~'Z'的字符串,然后有t个插入操作为 “ 添加后的在原字符串的位置 x  插入元素 c ”,字符串中有超过或等于 3 个相同的字符,则被消除,输出每次操作后剩余的字符串,如果为空,则输出“-”. 样例: ACCBA                     输出:  ABCCBA 5   AABCCBA 1 B AABBCCBA 0 A - 2 B A 4 C 0 A 解:

2016(胡赛复现)_大数找规律

Time Limit: 5 Sec  Memory Limit: 128 MB Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m;  2. a×b 是 2016 的倍数. Input 输入包含不超过 30 组数据. 每组数据包含两个整数 n,m (1≤n,m≤109). Output 对于每组数据,输出一个整数表示满足条件的数量. Sample Input 32 63 2016 2016 1000000000 1000

HDU 5703 Desert 水题 找规律

已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这题输出二进制数就行了......那就更简单了,直接输出1,然后后面跟n-1个0就行了╮(╯_╰)╭ 下面AC代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm>

找规律/hdu 1005 Number Sequence

题意 给出a,b,n,已知f[1]=f[2]=1,f[i]=(a*f[i-1]+b*f[i-2]) mod 7 输出f[n] 数据范围 1 <= A, B <= 1000, 1 <= n <= 100,000,000 分析 首先,直接求..肯定是不行的 会tle 会mle 但是可以找到规律,例如对a=1,b=1 这个数据,有 f1=1 f2=1 f3=3 f4=5 f5=4 f6=0 f7=1 f8=1 f9=3 f10=5 f11=4 f12=0 ???? 我们会发现有一定的规律

hdu 2147 kiki&#39;s game(DP(SG)打表找规律)

题意: n*m的棋盘,一枚硬币右上角,每人每次可将硬币移向三个方向之一(一格单位):左边,下边,左下边. 无法移动硬币的人负. 给出n和m,问,先手胜还是后手胜. 数据范围: n, m (0<n,m<=2000) 思路: dp[i][j]=0,说明从(i,j)这个点到时左下角先手败.dp[i][j]=1则先手胜. 然后记忆搜.但是记忆搜会超时. 搜完把整张表打出来,发现规律了,,,,然后,,,代码剩几行了. 代码: ///打表观察 /* int f[2005][2005]; int go(in

Codeforces Round #242 (Div. 2)C(找规律,异或运算)

一看就是找规律的题.只要熟悉异或的性质,可以秒杀. 为了防止忘记异或的规则,可以把异或理解为半加运算:其运算法则相当于不带进位的二进制加法. 一些性质如下: 交换律: 结合律: 恒等律: 归零律: 典型应用:交换a和b的值:a=a^b^(b=a); #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<