uva 11916 Emoogle Grid (BSGS)
UVA 11916
BSGS的一道简单题,不过中间卡了一下没有及时取模,其他这里的100000007是素数,所以不用加上拓展就能做了。
代码如下:
1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 #include <cstring> 5 #include <vector> 6 #include <cmath> 7 #include <map> 8 9 using namespace std; 10 11 template<class T> T gcd(T a, T b) { return b ? a : gcd(b, a % b);} 12 typedef long long LL; 13 void gcd(LL a, LL b, LL &d, LL &x, LL &y) { 14 if (b) { gcd(b, a % b, d, y, x); y -= a / b * x;} 15 else d = a, x = 1, y = 0; 16 } 17 const LL MOD = 100000007; 18 const int N = 555; 19 20 LL multi(LL a, LL p) { 21 LL ret = 1; 22 a %= MOD; 23 while (p > 0) { 24 if (p & 1) ret *= a, ret %= MOD; 25 a *= a, a %= MOD, p >>= 1; 26 } 27 return ret; 28 } 29 map<LL, int> id; 30 vector<LL> rec[N]; 31 LL mincol; 32 33 void bs(LL b, LL x, LL rt) { 34 id.clear(); 35 for (int i = 0; i <= rt; i++) { 36 if (id.find(b) != id.end()) break; 37 id[b] = i; 38 b *= x, b %= MOD; 39 } 40 } 41 42 LL gs(LL b, LL x, LL r) { 43 LL cur = b; 44 //for (int i = 0; i < 50; i++) { 45 //if (cur == r) return mincol + i + 1; 46 //cur *= x, cur %= MOD; 47 //} 48 int rt = (int) ceil(sqrt((double) MOD)) + 1; 49 bs(b, x, rt); 50 LL st = multi(x, rt), p, q, d; 51 cur = 1; 52 for (int i = 0; i <= rt; i++) { 53 gcd(cur, MOD, d, p, q); 54 p %= MOD, p += MOD, p %= MOD, p *= r / d, p %= MOD; 55 if (id.find(p) != id.end()) return (LL) i * rt + id[p] + mincol + 1; 56 cur *= st, cur %= MOD; 57 } 58 return -1; 59 } 60 61 LL bf(LL b, LL x, LL r) { 62 LL cur = b; 63 for (int i = 0; i < MOD; i++) { 64 if (cur == r) return mincol + i + 1; 65 cur *= x, cur %= MOD; 66 } 67 return -1; 68 } 69 int main() { 70 //freopen("in", "r", stdin); 71 LL n, k, b, r, x, y, bres; 72 int T, cas = 1; 73 cin >> T; 74 while (T-- && cin >> n >> k >> b >> r) { 75 for (int i = 0; i < N; i++) rec[i].clear(); 76 id.clear(); 77 mincol = 1; 78 for (int i = 0; i < b; i++) { 79 cin >> x >> y; 80 if (id.find(y) == id.end()) id[y] = id.size() - 1; 81 rec[id[y]].push_back(x); 82 mincol = max(mincol, x); 83 } 84 bres = 1; 85 for (int i = 0, sz = id.size(); i < sz; i++) { 86 rec[i].push_back(0); 87 rec[i].push_back(mincol + 1); 88 sort(rec[i].begin(), rec[i].end()); 89 for (int j = 1, szj = rec[i].size(); j < szj; j++) { 90 if (rec[i][j] - rec[i][j - 1] - 2 >= 0) bres *= k * multi(k - 1, (LL) rec[i][j] - rec[i][j - 1] - 2) % MOD, bres %= MOD; 91 } 92 } 93 LL tmp = k * multi(k - 1, mincol - 1); 94 bres *= multi(tmp, n - id.size()); 95 bres %= MOD; 96 cout << "Case " << cas++ << ": "; 97 if (bres == r) { cout << mincol << endl; continue; } 98 int cnt = 0; 99 for (int i = 0, sz = id.size(); i < sz; i++) { 100 rec[i].pop_back(); 101 if (rec[i][rec[i].size() - 1] == mincol) bres *= k, bres %= MOD, cnt++; 102 } 103 bres *= multi(k - 1, n - cnt); 104 bres %= MOD; 105 k = multi(k - 1, n); 106 cout << gs(bres, k, r) << endl; 107 //cout << bf(bres, k, r) << endl; 108 } 109 return 0; 110 }
View Code
——written by Lyon
转载于:https://www.cnblogs.com/LyonLys/p/uva_11916_Lyon.html
uva 11916 Emoogle Grid (BSGS)相关推荐
- UVA - 11694 Gokigen Naname(dfs)
题意:在一个n*n(n7)网格中,有些交叉点上有数字.你的任务是给每个格子画一条斜线("/"和"\"),使得每个交叉点的数字等于和他们相连的斜线条数,且这些斜线 ...
- UltraGrid中实现下拉Grid(UltraDropDown)
昨天提到了如何在Grid的Cell中下拉列表框,今天将演示如何在Grid的Cell中实现下拉Grid,这也是UltraGrid提供的一个很好的特性. 1. 拖放一个Grid到Form中,添加一些Ban ...
- CSS布局—网格布局Grid(一)
CSS网格可以定义由行和列组成的二维布局,然后将元素放置到网格中.有些元素可能只占据网格的一个单元,另一些元素则可能占据多行或多列.网格的大小既可以精确定义,也可以根据自身内容自动计算.你既可以将元素 ...
- NG Toolset开发笔记--5GNR Resource Grid(1)
5GNR Resource Grid的开发目前基于3GPP Rel-15(2018-03)规范文本.主要参考的标准文本有:38.104, 38.211/212/213/214,38.321,38.33 ...
- NG Toolset开发笔记--5GNR Resource Grid(10)
PUCCH Requirement Analysis Part II PUCCH资源确定: 如果UE没有dedicated PUCCH资源配置,则使用SIB1---PUCCH-Resource-Com ...
- GRID(网格)布局
GRID布局 GRID布局将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,它与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置. 但是,它们也存在重大区别. Fle ...
- 【ACM】UVa 489 刽子手游戏(自顶向下)
[题目] Hangman Judge是一个猜英文单字的小游戏(在电子字典中常会看到),游戏规则如下: 1.答案单字写在纸上(每个字元一张纸),并且被盖起来,玩家每次猜一个英文字元(letter). 2 ...
- UVa 109 - SCUD Busters(凸包)
题意:输入n个国家,每个国家一些点,用围墙(多边形)围起来,围墙内的范围都属于这个国家,现在要发射一些导弹,如果导弹落到国家内,那对应的国家就会停电,现在问停电的总面积. 分析:1,求凸包,Graha ...
- NG Toolset开发笔记--5GNR Resource Grid(50)
ngapp_build20190320放出后,陆续收到反馈:app总是报错,不容易找到valid configuraiton能让工具顺利导出excel. 为方便调试验证,新增下列feature: (1 ...
- NG Toolset开发笔记--5GNR Resource Grid(29)
10/14~10/15完成: *ui design(parameters analysis) part II (三)UI Design Part II 3, Carrier/BWP settings ...
最新文章
- python装keras_python – 在anaconda中安装keras时出错. / p KER...
- 基于 SpringBoot,来实现MySQL读写分离技术
- MySQL数据库优化技巧(二)
- 大数据体系【协议】系列-1:gossip协议
- PADS Layout的一个鼠标小技巧
- java郝斌_郝斌Java自学教程全集打包
- 代码覆盖度-NCover监控IIS和exe,结果分析
- express 创建ejs项目,使用html
- .NET 项目开发总结
- 【FLink】Flink checkpoint 实现数据连续计算 恢复机制 案例实战
- android动画实现单摆效果
- 【技术教程】如何调用宇视SDK实现摄像机的云台控制?
- python获取B站单个视频的封面
- 生活记录:其实超度的是活着的人
- Exchange问题处理:Exchange server OAB 脱机地址簿下载失败常见解决方法
- node.js的前世今生(特色篇)
- HTML -JavaScript--模拟病毒
- 【区块链】区块链在金融领域的应用—对全球578家金融机构的调研
- 2022最新软件测试面试八股文,全网最全最新,堪称地表最强
- 在GoDaddy上部署SubText