题意;给出N,A,B;求A*x+ B*y = N+1   的大于0 的解的数量;

思路:先用exgcd求出大于0的初始解x,rest = N - x*A; sum = rest/LCM(A, B);

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <cmath>
  6. #include <cstdio>
  7. #include <string>
  8. #include <cstring>
  9. #include <vector>
  10. #include <queue>
  11. #include <stack>
  12. #include <set>
  13.  
  14. #define c_false ios_base::sync_with_stdio(false); cin.tie(0)
  15. #define INF 0x3f3f3f3f
  16. #define INFL 0x3f3f3f3f3f3f3f3f
  17. #define zero_(x,y) memset(x , y , sizeof(x))
  18. #define zero(x) memset(x , 0 , sizeof(x))
  19. #define MAX(x) memset(x , 0x3f ,sizeof(x))
  20. #define swa(x,y) {LL s;s=x;x=y;y=s;}
  21. using namespace std ;
  22. #define N 100005
  23. const double PI = acos(-1.0);
  24. typedef long long LL ;
  25. LL x, y, A, B, n, C;
  26. LL gcd(LL a, LL b){if(a== ) return b;else return gcd(b%a,a);}
  27.  
  28. LL exgcd(LL a, LL b, LL &x, LL &y){
  29. if(b == ){
  30. x = ; y = ;return a;
  31. }else{
  32. LL t = exgcd(b, a%b, y, x);
  33. y -= (a/b)*x;
  34. return t;
  35. }
  36. }
  37.  
  38. LL cal(){
  39. LL sum= ;
  40. LL r = exgcd(A, B, x, y);
  41. LL z = A*B/r;
  42.  
  43. if((+n)%r) return ;
  44. else{
  45. x = x*((+n)/r);
  46. LL d = B/r;
  47. x = (x%d + d) %d;
  48. if(x == )
  49. x += d;
  50. LL remain = n - x*A;
  51. if(remain < ) return ;
  52. else{
  53. sum++;
  54. sum += remain/z;
  55. }
  56. }
  57. return sum;
  58. }
  59. int main(){
  60. //freopen("in.txt","r",stdin);
  61. //freopen("out.txt","w",stdout);
  62. scanf("%I64d",&C);
  63. for(int i = ;i< C;i++){
  64. scanf("%I64d%I64d%I64d",&n, &A, &B);
  65. cout<<cal()<<endl;
  66. }
  67. return ;
  68. }

扩展欧几里德解的数量(51nod 1352)的更多相关文章

  1. HDU 2669 Romantic 扩展欧几里德---->解不定方程

    Romantic Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  2. POJ 1061 青蛙的约会 扩展欧几里德--解不定方程

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 81606   Accepted: 14116 Descripti ...

  3. 扩展欧几里德 SGU 106

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=106   题意:求ax + by + c = 0在[x1, x2], [y1, y2 ...

  4. 51nod 1352 扩展欧几里德

    给出N个固定集合{1,N},{2,N-1},{3,N-2},...,{N-1,2},{N,1}.求出有多少个集合满足:第一个元素是A的倍数且第二个元素是B的倍数. 提示: 对于第二组测试数据,集合分别 ...

  5. 欧几里德和扩展欧几里德详解 以及例题CodeForces 7C

    欧几里德定理: 对于整数a,b来说,gcd(a, b)==gcd(b, a%b)==d(a与b的最大公约数),又称为辗转相除法 证明: 因为a是d的倍数,b是d的倍数:所以a%d==0:b%d==0: ...

  6. 51nod 1352:集合计数

    1352 集合计数 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给出N个固定集合{1,N},{2,N-1},{3,N-2},...,{N-1,2 ...

  7. POJ 2142 The Balance【扩展欧几里德】

    题意:有两种类型的砝码,每种的砝码质量a和b给你,现在要求称出质量为c的物品,要求a的数量x和b的数量y最小,以及x+y的值最小. 用扩展欧几里德求ax+by=c,求出ax+by=1的一组通解,求出当 ...

  8. POJ2142 The Balance (扩展欧几里德)

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia The Balance 题目大意  你有一个天平(天平左右两边都可以放砝码)与重量为a,b(1<= ...

  9. (扩展欧几里德算法)zzuoj 10402: C.机器人

    10402: C.机器人 Description Dr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远.由于受软硬件设计所限,机器人卡尔只能定点跳远.若机器人站在(X,Y)位置,它可以原地 ...

随机推荐

  1. ASP.NET中进行消息处理(MSMQ) 三(转)

    在本文的前两篇文章里对MSMQ的相关知识点进行了介绍,很多阅读过这前两篇文章的朋友都曾问到过这样一些问题:  1.如何把MSMQ应用到实际的项目中去呢?  2.可不可以介绍一个实际的应用实例?  3. ...

  2. Mysql备份迁移——MySqlBackup(.net)——(无法解决视图嵌视图报错)

    这里是利用MySqlBackup,可以再nuget中下载. 无法解决视图嵌视图报错的问题,只导表跟数据比较合适,如果有视图嵌视图,请参照Mysql备份迁移——Mysqldump(.NET调用Mysql ...

  3. 天嵌E8卡片电脑USBWIFI驱动linux移植

    下载驱动:http://pan.baidu.com/s/1sjL0Axn The drivers can be downloaded from Ralink website, the present ...

  4. Create User - mysql

    Create User MariaDB [(none)]> CREATE USER 'DBAdmin'@'%' IDENTIFIED BY 'mypasswd';Query OK, 0 rows ...

  5. 0,SFDC 管理员篇 - 整体框架

    SFDC 框架布局, 通过以下分类我们可以了解Salesforce 每个云上所提供的功能和用途. ●销售云 Sales Cloud 销售自动化(Sales ForceAutomation,SFA)&a ...

  6. php判断 !==false

    测试 if($res !== false){ echo "未定义通过<br>"; }else{ echo "未定义不通过<br>"; } ...

  7. MySQL备份学习

    备份分类 物理和逻辑备份 物理备份直接拷贝数据库目录和文件,适合数据量大.重要且需要在出现问题时快速恢复的数据库 逻辑备份保存信息包括逻辑数据库结构(数据库表的创建脚本)和内容(插入语句或者分隔符平面 ...

  8. Deep learning with Theano 官方中文教程(翻译)(四)—— 卷积神经网络(CNN)

    供大家相互交流和学习,本人水平有限,若有各种大小错误,还请巨牛大牛小牛微牛们立马拍砖,这样才能共同进步!若引用译文请注明出处http://www.cnblogs.com/charleshuang/. ...

  9. 正确停止kafka的方法

    kill -15 pid 即: kill SIGNTERM pid 不要使用kill -9. kill -15会触发调用shutdownHook的run方法,从而可以执行关闭服务器的时候一些必要代码. ...

  10. UVa 10071 - Back to High School Physics

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...