HDU
来源:互联网 发布:淘宝定制家具付款流程 编辑:程序博客网 时间:2024/06/15 04:33
求在小于等于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)。
310 31 2 30 1 2100 73 4 5 6 7 8 91 2 3 4 5 6 710000 101 2 3 4 5 6 7 8 9 100 1 2 3 4 5 6 7 8 9
103
参考:
http://blog.csdn.net/fyxz1314/article/details/38497299
http://blog.csdn.net/u010579068/article/details/45422941
代码:
#include<iostream>#include<string>#include<cstdio>#include<algorithm>#include<cmath>#include<iomanip>#include<queue>#include<cstring>#include<map>using namespace std;typedef long long ll;int n,m;int M[15],A[15];void extend_Eculide(int a,int b,int &d,int &x,int &y){ if(b==0) { d=a; x=1; y=0; return; } extend_Eculide(b,a%b,d,y,x); y-=x*(a/b);}int main(){ int i,T; int m1,r1,m2,r2,flag; int x,y,d,c,t; scanf("%d",&T); while(T--) { cin>>n>>m; for(i=0;i<m;i++) cin>>M[i]; for(i=0;i<m;i++) cin>>A[i]; flag=0; m1=M[0]; r1=A[0]; for(i=1;i<m;i++) { m2=M[i]; r2=A[i]; extend_Eculide(m1,m2,d,x,y); c=r2-r1; if(c%d) { flag=1; break; } t=m2/d; x=(c/d*x%t+t)%t; r1=m1*x+r1; m1=m1*m2/d; } if(flag||n<r1) { cout<<0<<endl; } else { int ans=(n-r1)/m1+1; if(r1==0) ans--; cout<<ans<<endl; } } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- Day11多态部分-1 【1.1 多态的体现】
- NOIP2017棋盘(普及T3)
- DP(二)2955 Robberies(java版)
- 计算1/1-1/2+1/3-...+1/99-1/100的值
- 654. Maximum Binary Tree
- HDU
- NOIP2017跳房子(普及T4)
- cmake: Enhanced source file handling with target_sources()
- 【Python基础】1.4.4 图形用户实例——用Python实现简易聊天对话框
- 事件监听的几个要点
- 57. Insert Interval
- 推荐《Linux 多线程服务器端编程》
- Day11多态部分-2 【1.2 多态的前提】
- 字符串额模拟实现2