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

题意:

给定n个数a1,a2,...an,依次求出相邻两数之和,将得到一个新数列。重复上述操作,最后结果将变成一个数。问这个数除以m的余数与哪些数无关?例如n=3,m=2时,第一次求和得到a1+a2,a2+a3,再求和得到a1+2a2+a3,它除以2的余数和a2无关。

思路:

如果有n个数,最后结果就是杨辉三角的第n-1行。这样算出每一项的系数是很容易的,但是n很大,系数到最后很大。所以直接C%m的话不行。

有个整除的条件:m中每个素因子在C中都存在并且C中的指数大于等于m的素因子的指数。

所以我们先将m分解素因子,依次计算各个素因子在C中的指数,这里还要用到递推式,每次从左到右计算C的时候,只需要考虑(n-k+1)/k,因为在上一次已经计算过了,它的素因子指数已经保存下来了。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6
 7 const int maxn=1e5+5;
 8
 9 int n,m;
10 int fac[105][2];  //f[][0]用来存储质因子,f[][1]存储对应质因子的个数
11 int c[105];
12 int a[maxn];
13 int num;   //m分解质因子的个数
14
15 void factor()   //分解质因子
16 {
17     for(int i=2;i*i<=m;i++)
18     {
19         if(m%i==0)
20         {
21             fac[++num][0]=i;
22             fac[num][1]=0;
23             do
24             {
25                 fac[num][1]++;
26                 m/=i;
27             }while(m%i==0);
28         }
29     }
30     if(m>1)
31     {
32         fac[++num][0]=m;
33         fac[num][1]=1;
34     }
35 }
36
37 bool check(int n,int i)
38 {
39     int x=n-i;  //n-1-i+1
40     int y=i;
41     for(int i=1;i<=num;i++)
42     {
43         int p=fac[i][0];
44         while(x%p==0)
45         {
46             x/=p;
47             c[i]++;
48         }
49         while(y%p==0)
50         {
51             y/=p;
52             c[i]--;
53         }
54     }
55     for(int i=1;i<=num;i++)
56         if(c[i]<fac[i][1])
57             return false;
58     return true;
59 }
60
61 int main()
62 {
63     while(cin>>n>>m)
64     {
65         num=0;
66         int cnt=0;
67         factor();
68         memset(c,0,sizeof(c));
69         for(int i=1;i<n-1;i++)   //第1项和最后一项都是1,直接跳过
70         {
71             if(check(n,i))
72                 a[cnt++]=i+1;
73         }
74         printf("%d\n",cnt);
75         for (int i = 0; i < cnt; i++)
76             printf("%s%d", i == 0 ? "" : " ", a[i]);
77         printf("\n");
78     }
79     return 0;
80 }

转载于:https://www.cnblogs.com/zyb993963526/p/6679418.html

UVa 1635 无关的元素(唯一分解定理+二项式定理)相关推荐

  1. HDU6287 口算训练(唯一分解定理+二分)

    口算训练 Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Sub ...

  2. 唯一分解定理一篇就够了

    如果与唯一定理一起应用需要用到素数筛,可以看这篇文章: 线性筛判断素数 唯一分解定理: 任何一个大于1的自然数 N,如果N不为质数,**那么N可以唯一分解成有限个质数的乘积: 这里P1<P2&l ...

  3. 欧几里得算法与唯一分解定理

    整理的算法模板合集: ACM模板 目录 最大公约数与最大公倍数 唯一分解定理 快速分解质因子 最大公约数与最大公倍数 最多O(logn)O(logn)O(logn) int gcd(int a, in ...

  4. FZU 1075 分解素因子【数论/唯一分解定理/分解素因子裸模板】

    [唯一分解定理]:https://www.cnblogs.com/mjtcn/p/6743624.html 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个 ...

  5. 唯一分解定理(算术基本定理)详解——hdu5248和lightoj1341

    算数分解定理(唯一分解定理): 定义: 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1 P2a2P3a3-Pnan,这里P1<P2<P3-& ...

  6. Gym-101466K Random Numbers(线段树,数学,唯一分解定理)

    给一棵树,树上每个节点有一个权值,有两个操作,RAND操作查询u的子树乘积是多少以及有多少因数,SEED操作把节点u乘上v n,q <= 1e5.数值小于等于1e9,最大的质因数不超过13 组队 ...

  7. LightOJ - 1236 (唯一分解定理)

    题意:求有多少对数对(i,j)满足lcm(i,j) = n,1<=i<=j, 1<=n<=1e14. 分析:根据整数的唯一分解定理,n可以分解为(p1^e1)*(p2^e2)* ...

  8. 牛客 - 阶乘(唯一分解定理)

    题目链接:点击查看 题目大意:给出一个 p ,求出最小的 n! 使得 p 可以整除 n! 题目分析:因为 p 高达 1e9 ,可以考虑sqrt(n)的算法,也就是唯一分解定理了,分解之后对于每个质因子 ...

  9. CodeForces - 222C Reducing Fractions(唯一分解定理)

    题目链接:点击查看 题目大意:给出两个数组,数组a表示的是分子的因数,数组b表示的是分母的因数,求约分后的答案 题目分析:一看题目挺简单的,但是在输出的那里这个题目做了特定的要求,题目首先给出的是1e ...

最新文章

  1. 常见http状态码说明(转)
  2. 基于MATLAB的交流电动机调速系统仿真
  3. 使用SpringMVC 的MultipartFile文件上传时参数获取的一个坑
  4. ssd颗粒查看工具_SSD又降价了,但是使用前一定要做这几件事
  5. a.out的构成及运行时在内存区域的分配
  6. 64位操作系统 mysql_MySQL学习第三天 Windows 64位操作系统下验证MySQL
  7. Thrift RPC实战(七) 基于zookeeper和thrift的RPC服务发布订阅
  8. Deepracer 学了就能云驾驭赛车? Deepracer机器学习入门级干货分享!
  9. conime.exe 文件的秘密
  10. Go 基础(二)关键字和代码注释
  11. WINCE6.0下载地址
  12. Codeblocks修改字体
  13. 二进制SCA指纹提取黑科技:Go语言逆向技术
  14. Android手机按键【监听】
  15. 初试Cloudxns详解,智能解析如此简单
  16. 罗技MX Master3Master 2s
  17. 黑苹果安装教程,教您黑苹果怎么安装
  18. 攻坚利器 | KFS助我们力挽狂澜,9天内政务系统开发迁移容灾全搞定!
  19. OpenStack(Queens版)高集群-3.高可用配置(pacemakerhaproxy)
  20. Proxmox VE 超融合集群不停服务更换硬盘操作实录

热门文章

  1. 每周一书-《程序开发心理学(银年纪念版)》
  2. 快速通过软件设计师考试方法
  3. 串口循环缓存区 简单 免初始化 不用堆、指针、分段memcpy
  4. android+去掉飞行模式,在Android中关闭飞行模式
  5. Git for Windows安装和基本设置
  6. Nexus启动失败处理:The nexus service was launched, but failed to start.
  7. Spring mvc Interceptor 解决Session超时配置流程
  8. MESSAGE: [unixODBC][MySQL][ODBC 3.51 Driver]Can't connect to local MySQL server through socket '/tmp
  9. 中小企业上云多地域办公组网(SAG)解决方案
  10. mongodb服务安装及部署配置