[NOIP模拟] Math
来源:互联网 发布:北京婚纱照 知乎 编辑:程序博客网 时间:2024/06/16 09:37
About :
2017. 10. 24 NOIP模拟 T3
没有什么时间了。不能停下。I’m always there, carry you.
Solution :
这道题说实话,没看出来,那么我开始讲了。
初步审题我们可以知道我们需要分奇偶来讨论,先来说一说奇数的情况 :
如果 a 是奇数,那么 b 一定是奇数, 下正
奇数可以表示为 :
故
由于奇数的四次方模 16 余 1, 故
由于
以此类推,得
接下来讲一讲偶数的情况 :
如果 a 为偶数, 那么 b 也为偶数。
若
那么对于d < n 时, 直接爆力就可以了。
Code :
#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <algorithm>#include <iostream>#include <cmath>#include <ctime>#include <map>#include <vector>using namespace std;inline int read() { int i = 0, f = 1; char ch = getchar(); while(!isdigit(ch)) { if(ch == '-') f = -1; ch = getchar(); } while(isdigit(ch)) { i = (i << 3) + (i << 1) + ch - '0'; ch = getchar(); } return i * f;}const int MAXN = 505;const int MAXM = (1 << 8) - 1;const int MAX = MAXM + 5;const int mod = 1e9 + 7;int dp[MAXN][MAX], num[MAXN], exist[MAXN];int n, k, prime[8] = {2, 3, 5, 7, 11, 13, 17, 19};vector<int> g[MAXN]; inline void init() { for(int i = 1; i <= n; ++i) { int now = i; exist[i] = 1; for(int j = 0; j < 8; ++j) if(now % (prime[j] * prime[j]) == 0) { exist[i] = 0; break; } else if(now % prime[j] == 0) now /= prime[j], num[i] |= (1 << j); if(exist[i]) { if(now == 1) g[i].push_back(i); else g[now].push_back(i); } }}inline void add(int &x, int t) { x += t, (x >= mod) ? x -= mod : 0;}inline void solve() { n = read(), k = read(); memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n; ++i) g[i].clear(); init(); dp[0][0] = 1; for(int i = 1; i <= n; ++i) if(exist[i] && g[i].size() != 0) { int temp[MAXN]; for(int j = g[i].size() - 1; j >= 0; --j) temp[j] = num[g[i][j]]; for(int l = k - 1; l >= 0; --l) for(int j = g[i].size() - 1; j >= 0; --j) for(int s = (MAXM ^ temp[j]), t = s ;; s = ((s - 1) & t)) { add(dp[l + 1][s | temp[j]], dp[l][s]); if(s == 0) break; } } int ans = 0; for(int i = 1; i <= k; ++i) for(int j = 0; j <= MAXM; ++j) add(ans, dp[i][j]); cout<<ans<<'\n'; }int main() { int t = read(); while(t--) { solve(); }}
- 【NOIP模拟】Math
- [NOIP模拟] Math
- NOIP模拟 Math 【同余】
- [NOIP模拟][数学推理]Math
- 【NOIP模拟】 (10.24) T3 math
- NOIP模拟(10.24)T3 Math
- 【10.6NOIP普及模拟】MATH——枚举法
- Noip模拟
- 【NOIP模拟】20151004模拟
- 【NOIP模拟】 20151005模拟
- 【NOIP模拟】 20151006模拟
- 【NOIP模拟】 20151007模拟
- 【NOIP模拟】20151014模拟
- 【NOIP模拟】20151015模拟
- NOIP提高组【JZOJ4782】Math
- python-模拟math.pi
- [NOIP2017模拟]Math
- 【09 NOIP 模拟】light
- 抽象工厂
- 荷兰计算机科学家Dijkstra
- Weblogic 服务器如何支持https协议
- Java Jedis操作Redis示例(四)——Redis和Mysql的结合方案演进
- leetcode第一题,二数之和
- [NOIP模拟] Math
- bzoj1878 莫队
- 抽象工厂模式一个例子
- java第八天/10.21
- 黄金分割法-C语言
- 决策树之 sklearn 实现
- Linux之GCC经典入门教程
- 支付宝接口接入方法 步骤十分详细
- 算法-深度搜索