这题确实是好。

其实是求x1*a1+x2*a2+....M*xn+1=1有解的条件。很明显,就是(a1,a2,...M)=1了。然后,可以想象,直接求有多少种,很难,所以,求出选择哪些数一起会不与M互质。。。好吧,思路就到这里了。。。T_T

经过人提示,若(a1,a2,,,,an)与M不互质,则最大公约数中必定包含M中的质数。啊,愰然大悟,这不是显而易见的吗?为什么我想不到?

所以,先求出M包含哪些质数,那么,选出其中一些包含该质数的数组成数列不就好了?这很容易就能想到容斥原理了,因为选出一些数,使它具有性质P1,又选出另一些集合使它具有P2,P3....,最终求至少包含一个性质的集合。

那么,能被1~M中能被P1整除的个数为【M/p1】,以此类推。。。

由容斥原理公式

如此,从M^N中减去就可以了。

#include <iostream>
#include <cstdio>
#include <algorithm>
#define LL __int64
using namespace std; LL prime[50],l;
LL n,m; LL Power(LL m,LL n){
LL ret=1;
for(int i=1;i<=n;i++){
ret=ret*m;
}
return ret;
} void wprime(LL m){
if(m%2==0){
prime[l++]=2;
while(m%2==0)
m/=2;
}
for(LL i=3;i*i<=m;i+=2)
if(m%i==0){
prime[l++]=i;
while(m%i==0)
m/=i;
}
if(m>1)
prime[l++]=m;
} void Nest(LL p, LL re, LL c,LL &res){
if(c==0){
// cout<<re<<endl;
res+=Power(m/re,n);
return ;
}
else{
for(LL i=p;i<l;i++){
Nest(i+1,re*prime[i],c-1,res);
}
}
} LL work(LL c){
LL res=0;
for(LL i=0;i<l;i++){
Nest(i+1,prime[i],c-1,res);
}
return res;
} int main(){
while(scanf("%I64d%I64d",&n,&m)!=EOF){
l=0;
LL al=Power(m,n);
wprime(m);
LL c=1;
for(LL i=1;i<=l;i++){
c*=-1;
LL res=work(i);
al+=(c*res);
}
printf("%I64d\n",al);
}
return 0;
}

最新文章

  1. iPhone4下window各个部分的高度
  2. [原] SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart
  3. pthread_barrier_init,pthread_barrier_wait简介
  4. Ubuntu 12.04本地编译安装Vim
  5. WinForm控件小知识
  6. Linux Vi的使用
  7. 剧烈变化的移动互联网O2O
  8. 创建理想的SEQUENCE和自增长的trigger
  9. windows 2003 域控制器(AD)的常规命令行操作以及修复
  10. java volatile的一个验证反例(转)
  11. Winform窗体间传递数据
  12. JQuery操作option的添加、删除、取值
  13. mysql 正则表达式问号
  14. POJ - 3264——Balanced Lineup(入门线段树)
  15. 【php】 php获取文件路径中的文件名和文件后缀方法
  16. 移动设备输入Touch类及相关API
  17. Linux常用系统命令
  18. PAT A1109 Group Photo (25 分)——排序
  19. 最近IOS10.2.1 iphone6 无法通过appStore 来更新 下载任何APP。好烦啊。
  20. Java正则表达式的使用和详解(上)

热门文章

  1. C语言高速入门系列(一)
  2. 《从零開始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范
  3. 什么是 SHTML
  4. 点击TButton后的执行OnClick和OnMouseDown两个事件的过程(其实是通过WM_COMMAND执行程序员的代码)
  5. php递归取目录下的所有文件(原创)
  6. Hdu-6253 2017CCPC-Final K.Knightmare 规律
  7. VM虚拟机-Windows
  8. Hadoop MapReduce编程 API入门系列之join(二十六)(未完)
  9. 如何用PYTHON代码写出音乐
  10. 记一个男默女泪的 BUG