HDU 1573~3579 X问题Hello Kiki[同余方程]
X问题
时限:1000MS
题意很明确,就是让你解一元同余方程组。题目的要求是找出小于等于\(N\)个数。
利用同余方程的性质,可以找到\(X\)的最小值\(x_0\),同时也知道\(X\equiv t(mod\,m)\),其中\(m\)为\([m_0,m_1,\cdots,m_M]\),根据上面的条件可以得到\(x_0+m*z\leq N\),然后将z解出来就是要的答案。
#include "iostream"
#include "stdio.h"
using namespace std;
typedef long long LL;
LL m[20], r[20];
void ext_gcd(LL a, LL b, LL &d, LL& x, LL& y) {LL res;if (!b){x = 1; y = 0; d = a;}else {ext_gcd(b, a%b, d, y, x);y -= x*(a/b);}
}
LL mod_line(LL a, LL b, LL m, LL& d) {LL x, y; ext_gcd(a, m, d, x, y);if (b%d) return -1;LL e = x*(b/d)%(m/d) + (m/d);return e%(m/d);
}
int main(int argc, char const *argv[])
{int T;LL N, M;scanf("%d", &T);while (T--) {bool flag = false;scanf("%lld%lld", &N, &M);for (int i = 0; i < M; i++) scanf("%lld", m+i);for (int j = 0; j < M; j++) scanf("%lld", r+j); for (int i = 1; i < M; i++) {LL d;LL x0 = mod_line(m[i-1],r[i] - r[i-1], m[i], d);if (flag || x0 == -1) {flag = true; break;}r[i] = x0*m[i-1]+r[i-1];m[i] = m[i-1]*(m[i]/d);r[i] %= m[i];} if (flag) printf("0\n");else {LL t = 0;if (r[M-1] <= N) t =(N-r[M-1])/m[M-1] + 1;if (t && r[M-1] == 0) t--; //去掉解是0的情况printf("%lld\n", t);}}return 0;
}
Hello Kiki
时限:1000MS
这道题相比上道题就简单多了,直接计算,然后输出最小的。同样注意要是答案是0的时候的输出。
#include "bits/stdc++.h"
using namespace std;
typedef long long LL;
LL m[20], r[20];
void ext_gcd(LL a, LL b, LL &d, LL& x, LL& y) {LL res;if (!b){x = 1; y = 0; d = a;}else {ext_gcd(b, a%b, d, y, x);y -= x*(a/b);}
}
LL mod_line(LL a, LL b, LL m, LL& d) {LL x, y; ext_gcd(a, m, d, x, y);if (b%d) return -1;LL e = x*(b/d)%(m/d) + (m/d);return e%(m/d);
}
int main(int argc, char const *argv[])
{int T; LL N;int Kcase = 0;scanf("%d", &T);while (T--) {bool flag = false;scanf("%lld", &N);for (int i = 0; i < N; i++) scanf("%lld", m+i);for (int j = 0; j < N; j++) scanf("%lld", r+j); for (int i = 1; i < N; i++) {LL d;LL x0 = mod_line(m[i-1],r[i] - r[i-1], m[i], d);if (flag || x0 == -1) {flag = true; break;}r[i] = x0*m[i-1]+r[i-1];m[i] = m[i-1]*(m[i]/d);r[i] %= m[i];} printf("Case %d: ", ++Kcase);if (flag) printf("-1\n");else {if (r[N-1] == 0) r[N-1] = m[N-1];printf("%lld\n", r[N-1]);}}return 0;
}
转载于:https://www.cnblogs.com/cniwoq/p/7265170.html
HDU 1573~3579 X问题Hello Kiki[同余方程]相关推荐
- 【hdu 1573 X问题】【 hdu3579 Hello Kiki 】【poj 2891】
题意:求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], -, X mod a[i] = b[i] ...
- HDU 1573: X问题
题目描述 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], -, X mod a[i] = b[ ...
- hdu 1573(中国剩余定理非互质情况)
解题思路:这道题目有可能a[i],两两不互质,所以直接用中国剩余定理肯定是不对的..这里考虑非互质的情况 问题描述:给出bi,ni的值,且n1, n2, n3,-, ni两两之间不一定互质,求Res的 ...
- HDU 1573 X问题 [中国剩余定理]
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 解一元线性同余方程组(详解+例题)
问题描述:给出bi,ni的值,且n1, n2, n3,-, ni两两之间不一定互质,求Res的值? 解:采用的是合并方程的做法. 这里将以合并第一第二个方程为例进行说明 由上图前2个方程得(设k1.k ...
- 扩展中国剩余定理模板
这就是神奇的非互质版CRT,同余方程组中各个模数可能不互质,如果再用以前互质版的做法就会出错(这个的原因我也没有深究,如果有兴趣的小伙伴懂的话欢迎在评论区里指点本蒟蒻). 对于模数不互质的情况,需要逐 ...
- ACM模块解析之 数论
数 论 一.简介 数论是ACM中的重点内容.历年竞赛题目,一般都有1~2道题目与数论有密切关系.数论涉及的概念和算法很多,用途也非常广泛.掌握与数论有关的方法,是参赛者需要具备的必要技能.数论的学习 ...
- 中国剩余定理及扩展中国剩余定理
目录 中国剩余定理CRT 扩展中国剩余定理ExCRT TJOI2009 猜数字 HDU 1573 X问题 中国剩余定理CRT 中国剩余定理是用来求线性同于方程组的. \[ \begin{aligned ...
- 杭电OJ分类题目(1)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...
最新文章
- 47. 对数组进行冒泡排序,实现冒泡排序的基础版与优化版
- SQL的事务回滚操作带案例分析
- monkeyrunner Can't open specified script file
- 运用类CL_SALV_TABLE实现alv
- python商务图表_Excel职场商务图表高效制作
- Cocos Creator实战教程(5)】——打砖块(物理引擎,碰撞检测)
- angular input使用输入框filter格式化日期
- 麦块未发现java怎么解决_教大家麦块我的世界盒子如何打开游戏
- X86汇编语言从实模式到保护模式14:用户程序编程接口及其实现
- javascript 正则表达式学习
- 玩转windows内置linux子系统_1.安装
- html 按钮id,获取当前按钮或者html的ID名称
- 停车场车牌识别摄像机,传统提成行业颠覆者
- 最小生成树问题:算法分析 Java 实现
- 2022-08-08 第二小组 张明旭 Java学习记录
- 一般将来时语法课教案_【语法视频课】第1~50节资料汇总
- 怎么用手机修改服务器的网关,网关,手把手教你手机怎么改网关和IP
- 篇4:xShell连接ubuntu不成功
- 密评|商用密码应用安全性评估
- 【面试】896- 助力春招!2021 阿里字节快手新鲜面经
热门文章
- 搭建Hadoop的Eclipse开发环境
- 人体姿态估计--RMPE: Regional Multi-Person Pose Estimation
- LeetCode 929	 Unique Email Addresses--python一行解法,Java解法
- Linux更新pip国内源
- pandas中df的用法
- 求e的近似值java_7-78 求e的近似值 (15 分)
- 【RocketMQ工作原理】offset管理
- Jvm 系列(五):Java GC 分析
- CSS display 属性
- python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...