原题:https://vjudge.net/problem/UVA-1635

这是一个极其典型的“从素因子角度出发”的题目,下面是我的代码:

  1. #include<iostream>
  2. #include<cstring>
  3. #include<cstdio>
  4. #include<algorithm>
  5. #include<cmath>
  6. using namespace std;
  7.  
  8. const int maxn = 1e5 + ;
  9. int md[],mz[];
  10. int ans[maxn];
  11. int n,m,lenth;
  12. int c[];
  13.  
  14. bool check(int n,int i)
  15. {
  16. int x=n-i;
  17. int y=i;
  18. for(int k=;k<lenth;k++)
  19. {
  20. int p=md[k];
  21. while(x%p==)
  22. {
  23. x/=p;
  24. c[k]++;
  25. }
  26. while(y%p==)
  27. {
  28. y/=p;
  29. c[k]--;
  30. }//上下两个循环不能合并,因为这是一个递增积累过程,
  31. }//也正因如此才需要额外开辟一个数组c.
  32. for(int k=;k<lenth;k++)
  33. if(c[k]<mz[k])return false;
  34. return true;
  35. }
  36.  
  37. int factor()
  38. {//用来分解m
  39. memset(md,,sizeof(md));
  40. memset(mz,,sizeof(mz));
  41. int c=m,cur=;
  42. int p=sqrt(c);
  43. for(int i=;i<=p;i++)
  44. {
  45. bool ok=false;
  46. while(c%i==)
  47. {
  48. md[cur]=i;
  49. mz[cur]++;
  50. c/=i;
  51. ok=true;
  52. }
  53. if(ok)cur++;
  54. if(c==)break;
  55. }
  56. if(c>)md[cur]=c,mz[cur]=,cur++;
  57. return cur;
  58. }
  59.  
  60. int main()
  61. {
  62. //freopen("input.txt","r",stdin);
  63. //freopen("text.txt","w",stdout);
  64. while(cin>>n>>m)
  65. {
  66. lenth=factor();//一开始忘记了记录lenth
  67. int cnt=;
  68. memset(c,,sizeof(c));
  69. //
  70. for(int i=;i<n-;i++)
  71. if(check(n,i))ans[cnt++]=i+;
  72. printf("%d\n",cnt);
  73. for(int i=;i<cnt;i++)
  74. {
  75. if(i>)printf(" ");
  76. printf("%d",ans[i]);
  77. }
  78. printf("\n");
  79. }
  80. return ;
  81. }

UVA1635-唯一分解定理的基本应用2的更多相关文章

  1. 【组合数的唯一分解定理】Uva1635

    给出n.m,求得最终求和数列an=C(n-1,0)*x1 + C(n-1,1)*x2+...+C(n-1,n-1)*xn; 若xi与m无关,则an除以m的余数与xi无关,即余数不含xi的项: 输入:n ...

  2. Irrelevant Elements UVA - 1635 二项式定理+组合数公式+素数筛+唯一分解定理

    /** 题目:Irrelevant Elements UVA - 1635 链接:https://vjudge.net/problem/UVA-1635 题意:給定n,m;題意抽象成(a+b)^(n- ...

  3. NOIP2009Hankson 的趣味题[唯一分解定理|暴力]

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...

  4. UVA - 10375 Choose and divide[唯一分解定理]

    UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  5. uva10375 Choose and Divide(唯一分解定理)

    uva10375 Choose and Divide(唯一分解定理) 题意: 已知C(m,n)=m! / (n!*(m-n!)),输入整数p,q,r,s(p>=q,r>=s,p,q,r,s ...

  6. 1341 - Aladdin and the Flying Carpet ---light oj (唯一分解定理+素数筛选)

    http://lightoj.com/volume_showproblem.php?problem=1341 题目大意: 给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. ...

  7. UVA 10375 Choose and divide【唯一分解定理】

    题意:求C(p,q)/C(r,s),4个数均小于10000,答案不大于10^8 思路:根据答案的范围猜测,不需要使用高精度.根据唯一分解定理,每一个数都可以分解成若干素数相乘.先求出10000以内的所 ...

  8. 唯一分解定理 poj 1365

    一行代表一个数 x 给你底数和指数 求x-1的唯一分解定理的底数和指数 从大到小输出 #include<stdio.h> #include<string.h> #include ...

  9. UVA294DIvisors(唯一分解定理+约数个数)

    题目链接 题意:输入两个整数L,U(L <= U <= 1000000000, u - l <= 10000),统计区间[L,U]的整数中哪一个的正约数最多,多个输出最小的那个 本来 ...

  10. POJ1845Sumdiv(求所有因子和 + 唯一分解定理)

    Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 17387   Accepted: 4374 Descripti ...

随机推荐

  1. Python中heapq与优先队列【详细】

    本文始发于个人公众号:TechFlow, 原创不易,求个关注 今天的文章来介绍Python当中一个蛮有用的库--heapq. heapq的全写是heap queue,是堆队列的意思.这里的堆和队列都是 ...

  2. Servlet乱码问题解决

    对于请求参数的编码处理基本上分为get和post两种情况. 1.POST index.html <!DOCTYPE html> <head> <meta http-equ ...

  3. ATL窗口

    标准的Windows应用程序框架: /*------------------------------------------------------------ HELLOWIN.C -- Displ ...

  4. WTL Hello World

    构建最简单的WTL Hello World程序,基于:WTL91_5321_Final + VS2013 + WIN7 添加->新建项目 为了简单起见,我们删除一些button和对应的处理代码( ...

  5. Android: Fragment编程指南

    本文来自于www.lanttor.org Fragment代表了Activity里的一个行为,或者Activity UI的一部分.你可以在一个activity里构造多个Fragment,也可以在多个a ...

  6. 批处理版MPlayer播放器(甲兵时代原创批处理)(下)

    注意,由于空间不支持显示退格键,需要自己手动补上,方法如上图: 接上篇: 批处理版音视频播放器上(甲兵时代原创批处理) :Bc cls COLOR 2F echo. call :colour &quo ...

  7. mplayer使用心得[转]

    一直在用mplayer,其他的播放器很少用.以下是我使用过程中的一些心得.  注意,下面用的路径都是在我的电脑上的路径,使用时请不要照抄!应该换成你的电脑上的正确路径.  一.首先还是讲安装方面的问题 ...

  8. SpringBoot整合ActiveMQ和开启持久化

    一.点对点 1.提供者目录展示 2.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l ...

  9. CCF_201503-2_数字排序

    自己写个排序的cmp. #include<iostream> #include<cstdio> #include<algorithm> using namespac ...

  10. FFmpeg命令读取RTMP流如何设置超时时间

    子标题:FFmpeg命令录制RTMP流为FLV文件时如何设置超时时间 | FFmpeg命令如何解决录制产生阻塞的问题0x001: 前言 今天在测试程序时遇到两个问题.Q1:ffmpeg录制RTMP流并 ...