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[同余方程]相关推荐

  1. 【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] ...

  2. 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[ ...

  3. hdu 1573(中国剩余定理非互质情况)

    解题思路:这道题目有可能a[i],两两不互质,所以直接用中国剩余定理肯定是不对的..这里考虑非互质的情况 问题描述:给出bi,ni的值,且n1, n2, n3,-, ni两两之间不一定互质,求Res的 ...

  4. HDU 1573 X问题 [中国剩余定理]

    X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. 解一元线性同余方程组(详解+例题)

    问题描述:给出bi,ni的值,且n1, n2, n3,-, ni两两之间不一定互质,求Res的值? 解:采用的是合并方程的做法. 这里将以合并第一第二个方程为例进行说明 由上图前2个方程得(设k1.k ...

  6. 扩展中国剩余定理模板

    这就是神奇的非互质版CRT,同余方程组中各个模数可能不互质,如果再用以前互质版的做法就会出错(这个的原因我也没有深究,如果有兴趣的小伙伴懂的话欢迎在评论区里指点本蒟蒻). 对于模数不互质的情况,需要逐 ...

  7. ACM模块解析之 数论

    数  论 一.简介 数论是ACM中的重点内容.历年竞赛题目,一般都有1~2道题目与数论有密切关系.数论涉及的概念和算法很多,用途也非常广泛.掌握与数论有关的方法,是参赛者需要具备的必要技能.数论的学习 ...

  8. 中国剩余定理及扩展中国剩余定理

    目录 中国剩余定理CRT 扩展中国剩余定理ExCRT TJOI2009 猜数字 HDU 1573 X问题 中国剩余定理CRT 中国剩余定理是用来求线性同于方程组的. \[ \begin{aligned ...

  9. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

最新文章

  1. 47. 对数组进行冒泡排序,实现冒泡排序的基础版与优化版
  2. SQL的事务回滚操作带案例分析
  3. monkeyrunner Can't open specified script file
  4. 运用类CL_SALV_TABLE实现alv
  5. python商务图表_Excel职场商务图表高效制作
  6. Cocos Creator实战教程(5)】——打砖块(物理引擎,碰撞检测)
  7. angular input使用输入框filter格式化日期
  8. 麦块未发现java怎么解决_教大家麦块我的世界盒子如何打开游戏
  9. X86汇编语言从实模式到保护模式14:用户程序编程接口及其实现
  10. javascript 正则表达式学习
  11. 玩转windows内置linux子系统_1.安装
  12. html 按钮id,获取当前按钮或者html的ID名称
  13. 停车场车牌识别摄像机,传统提成行业颠覆者
  14. 最小生成树问题:算法分析 Java 实现
  15. 2022-08-08 第二小组 张明旭 Java学习记录
  16. 一般将来时语法课教案_【语法视频课】第1~50节资料汇总
  17. 怎么用手机修改服务器的网关,网关,手把手教你手机怎么改网关和IP
  18. 篇4:xShell连接ubuntu不成功
  19. 密评|商用密码应用安全性评估
  20. 【面试】896- 助力春招!2021 阿里字节快手新鲜面经

热门文章

  1. 搭建Hadoop的Eclipse开发环境
  2. 人体姿态估计--RMPE: Regional Multi-Person Pose Estimation
  3. LeetCode 929 Unique Email Addresses--python一行解法,Java解法
  4. Linux更新pip国内源
  5. pandas中df的用法
  6. 求e的近似值java_7-78 求e的近似值 (15 分)
  7. 【RocketMQ工作原理】offset管理
  8. Jvm 系列(五):Java GC 分析
  9. CSS display 属性
  10. python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...