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,因为在上一次已经计算过了,它的素因子指数已经保存下来了。

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std; const int maxn=1e5+; int n,m;
int fac[][]; //f[][0]用来存储质因子,f[][1]存储对应质因子的个数
int c[];
int a[maxn];
int num; //m分解质因子的个数 void factor() //分解质因子
{
for(int i=;i*i<=m;i++)
{
if(m%i==)
{
fac[++num][]=i;
fac[num][]=;
do
{
fac[num][]++;
m/=i;
}while(m%i==);
}
}
if(m>)
{
fac[++num][]=m;
fac[num][]=;
}
} bool check(int n,int i)
{
int x=n-i; //n-1-i+1
int y=i;
for(int i=;i<=num;i++)
{
int p=fac[i][];
while(x%p==)
{
x/=p;
c[i]++;
}
while(y%p==)
{
y/=p;
c[i]--;
}
}
for(int i=;i<=num;i++)
if(c[i]<fac[i][])
return false;
return true;
} int main()
{
while(cin>>n>>m)
{
num=;
int cnt=;
factor();
memset(c,,sizeof(c));
for(int i=;i<n-;i++) //第1项和最后一项都是1,直接跳过
{
if(check(n,i))
a[cnt++]=i+;
}
printf("%d\n",cnt);
for (int i = ; i < cnt; i++)
printf("%s%d", i == ? "" : " ", a[i]);
printf("\n");
}
return ;
}

最新文章

  1. CSC321 神经网络语言模型 RNN-LSTM
  2. [Asp.net]Uploadify上传大文件,Http error 500 解决方案
  3. 统计字符串”aaaabbbccccddfgh”中字母个数以及统计最多字母数
  4. 从一个数组中提取出第start位到第end位
  5. 微信朋友圈转疯了(golang写小爬虫抓取朋友圈文章)
  6. python安装MySQLdb模块
  7. 日历插件My97DatePicker的使用
  8. Re-enable Alcatraz on Xcode 6.3.2 or newer
  9. brew 更换国内源(镜像)
  10. 【Kill】两条Linux命令彻底杀死Oracle
  11. 老司机的奇怪noip模拟T1-guanyu
  12. 2017年最好的6个WEB前端开发手册下载
  13. IDEA 使用tomcat7-maven-plugin
  14. 关于 JavaScript 的 null 和 undefined,判断 null 的真实类型
  15. 推荐几个可以从google play(谷歌应用商店)直接下载原版APP的网站
  16. K8S学习笔记之ETCD启动失败注意事项
  17. 壁虎书2 End-to-End Machine Learning Project
  18. 托布利兹变换 toeplitz 变换
  19. 【LOJ】#6437. 「PKUSC2018」PKUSC
  20. 犯罪心理第八季/全集Criminal Minds迅雷下载

热门文章

  1. LINUX IPTABLES 防火墙配置
  2. java设计模式----迭代子模式
  3. log4j 设置将生成的日志进行gz压缩并删除过期日志
  4. (转)Python学习路径及练手项目合集
  5. 170530、java 迭代hashmap常用的三种方法
  6. Mybatis解决sql中like通配符模糊匹配 构造方法覆盖 mybits 增删改
  7. Python将科学计数法数值转换为指定精度浮点数
  8. CentOS7下的YUM源服务器搭建详解,过程写的很详细(转)
  9. sql server递归子节点、父节点,sql查询表结构,根据字段名查所在表
  10. Spring—切点表达式