X问题

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4869    Accepted Submission(s): 1617

Problem Description
求在小于等于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], … (0 < a[i] <= 10)。
 
Input

入数据的第一行为一个正整数T,表示有T组测试数据。每组测试数据的第一行为两个正整数N,M (0 < N <=
1000,000,000 , 0 < M <=
10),表示X小于等于N,数组a和b中各有M个元素。接下来两行,每行各有M个正整数,分别为a和b中的元素。
 
Output
对应每一组输入,在独立一行中输出一个正整数,表示满足条件的X的个数。
 
Sample Input
3
10 3
1 2 3
0 1 2
100 7
3 4 5 6 7 8 9
1 2 3 4 5 6 7
10000 10
1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
 
Sample Output
1
0
3
1.没有整数解输出0
2.求出满足条件的最小非负整数,设该数为X
X+k*mod<=N
k<=(n-x)/mod 当X为0的时候,答案为k,如果不为0,那么将自己也算进去,答案是k+1
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
typedef long long LL;
const int N = ;
LL extend_gcd(LL a,LL b,LL &x,LL &y)
{
if(b==)
{
x=,y=;
return a;
}
else
{
LL x1,y1;
LL d = extend_gcd(b,a%b,x1,y1);
x = y1;
y = x1-a/b*y1;
return d;
}
}
LL m[N],a[N];///模数为m,余数为a, X % m = a
bool solve(LL &m0,LL &a0,LL m,LL a)
{
long long y,x;
LL g = extend_gcd(m0,m,x,y);
LL t = a-a0>?a-a0:a0-a;
if( t%g )return false;
x *= (a - a0)/g;
x %= m/g;
a0 = (x*m0 + a0);
m0 *= m/g;
a0 %= m0;
if( a0 < )a0 += m0;
return true;
}
/**
* 无解返回false,有解返回true;
* 解的形式最后为 a0 + m0 * t (0<=a0<m0)
*/
bool MLES(LL &m0 ,LL &a0,LL n)///解为 X = a0 + m0 * k
{
bool flag = true;
m0 = ;
a0 = ;
for(int i = ; i < n; i++)
if( !solve(m0,a0,m[i],a[i]) )
{
flag = false;
break;
}
return flag;
}
int main()
{
int n;
LL N;
int tcase;
scanf("%d",&tcase);
while(tcase--)
{
scanf("%lld%d",&N,&n);
for(int i=; i<n; i++)
{
scanf("%lld",&m[i]);
}
for(int i=; i<n; i++)
{
scanf("%lld",&a[i]);
}
LL m0,a0;
bool flag = MLES(m0,a0,n);
LL x = (a0%m0+m0)%m0;
if(!flag) printf("0\n");
else
{
if(x>N) printf("0\n");
else{
LL ans = (N-x)/m0;
if(x==) printf("%lld\n",ans);
else printf("%lld\n",ans+);
}
}
}
return ;
}

最新文章

  1. 第一天ci框架开发商城1
  2. Java语言概要
  3. Sqlserver 中exists 和 in
  4. Delphi 精选文章地址
  5. Linux系统编程--文件IO操作
  6. css3 calc()方法详解
  7. Activiti 流程实例、任务、执行对象及相关的表
  8. ASP.NET验证控件RegularExpressionValidator的常见表达式
  9. html5 canvas 实现简单的画图
  10. Misra-Gries 算法
  11. springboot+mybatis+redis实现分布式缓存
  12. windows powershell基础
  13. QProcess与外部程序的调用
  14. [物理学与PDEs]第1章第3节 真空中的 Maxwell 方程组, Lorentz 力 3.2 Lorentz 力
  15. Vue+SpringBoot+Mybatis的简单员工管理项目
  16. day19模块1
  17. 在VMware中为Redhat HAT配置本地yum源
  18. DataTable导出为word,excel,html,csv,pdf,.txt
  19. (完全背包)Writing Code -- Codeforce 544C
  20. MIPS Mars 安装

热门文章

  1. 04.VUE学习之v-text v-html
  2. FLASH、SDRAM
  3. POJ 3320 尺取法(基础题)
  4. 快速排序,对于相同元素的优化,c++
  5. 自定义View/ViewGroup的步骤和实现
  6. 修改python新建文件时的模板
  7. Spring---基于Spring IOC的小程序
  8. LOJ #6008. 「网络流 24 题」餐巾计划
  9. Python中__str__和__repr__的区别
  10. 精简Docker镜像的五种通用方法