HDU 5528 Count a * b 2015 长春现场赛(积性函数)
来源:互联网 发布:新疆教师网络培训登录 编辑:程序博客网 时间:2024/06/16 18:10
题目链接
Count a * b
分析
这是很有意思的积性函数问题
反过来定义
即
对于素数
所以
分别求
AC code
//Problem : 5528 ( Count a * b ) Judge Status : Accepted//RunId : 22241701 Language : G++ Author : zouzhitao//Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta#include<bits/stdc++.h>#define pb push_back#define mp make_pair#define PI acos(-1)#define fi first#define se second#define INF 0x3f3f3f3f#define INF64 0x3f3f3f3f3f3f3f3f#define random(a,b) ((a)+rand()%((b)-(a)+1))#define ms(x,v) memset((x),(v),sizeof(x))#define sci(x) scanf("%d",&x );#define scf(x) scanf("%lf",&x );#define eps 1e-8#define dcmp(x) (fabs(x) < eps? 0:((x) <0?-1:1))#define lc o<<1#define rc o<<1|1using namespace std;typedef unsigned long long ULL;typedef long long LL;typedef long double DB;typedef pair<int,int> Pair;const int maxn = 1e5+10;int prime[maxn],cnt;//void getPrime(/* arguments */) { cnt =0; ms(prime,0); for(int i=2; i<maxn ; ++i){ if(!prime[i]){prime[cnt++] = i;} for(int j=0 ; j<cnt&&prime[j]*i < maxn ; ++j){ prime[i*prime[j]] =1; if(i%prime[j]==0)break; } }}ULL power_mod(ULL x,ULL n){ ULL ret =1; while (n) { if(n&1)ret*=x; n>>=1; x=x*x; } return ret;}ULL H(ULL p,ULL k){ return k==0?1 :power_mod(p,k-1)*(k*(p-1)+p);}ULL SQRT(ULL p,ULL k){ return power_mod(p,2*k);}int main(){ // ios_base::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); int T; getPrime(); scanf("%d",&T ); while (T--) { int n; cin>>n; int nn = n; ULL f1=1,f2=1; for(int i=0 ; i<cnt && prime[i]*prime[i]<=nn; ++i){ if(n%prime[i]==0){ int k=0; while (n%prime[i]==0) { n/=prime[i];k++; } ULL val1 = 0; ULL val2 =0; ULL p = prime[i]; for(int i=0 ; i<=k ;++i){ val1 += H(p,i);val2 += SQRT(p,i); } f1 *=val1; f2 *= val2; } } if(n!=1){ f1 *= (H(n,0)+H(n,1)); f2 *= (SQRT(n,0)+SQRT(n,1)); } std::cout << f2-f1 << '\n'; } //std::cout << "time "<< clock()/1000 <<"ms"<< '\n'; return 0;}
阅读全文
0 0
- HDU 5528 Count a * b 2015 长春现场赛(积性函数)
- HDU 5528【2015长春现场赛 B】 Count a * b
- HDU 5528 Count a * b (2015长春站B题&&积性函数)
- hdu 5528 Count a * b 2015长春区域赛 数论 分析
- HDU 5528 Count a × b 纪念长春站的遗憾
- HDU-5528-Count a * b-2015长春B题(数学推导)
- HDU 5528 Count a * b(积性函数)
- HDU 5528 Count a * b(线性筛+积性函数)
- hdu 5528 Count a * b
- 积性函数 hdu5528 Count a * b
- 2012长春现场赛b Bit Magic
- HDU 5534 【2015长春现场赛 H】 Partial Tree
- HDU 5528 Count a - b 欧拉函数 素数
- 2015长春现场赛感想
- hdu 5912 Fractionl 2016ACM/CCPC长春赛区现场赛B
- HDU 5528(Count a * b-反演)
- HDU 5528Count a * b(数论)
- 2012年ACM长春现场赛B题 2-sat
- 个人笔记-AndroidStudio多渠道打包
- 菜鸟先飞之JAVA_IO流
- 数据结构
- C# SerialPort 使用DataReceived接口利用空闲中断原理接收完整一帧数据
- 一台电脑安装多个JDK,C:\Windows\System32 找不到java.exe....
- HDU 5528 Count a * b 2015 长春现场赛(积性函数)
- vmware 安装vmware tools
- iOS之旅--UIScrollView疑难处理
- Java版支付宝手机网站支付
- Angular基础入门2——开发环境的搭建
- 学习日记-phpstorm更换皮肤
- 使用nginx搭建集群tomcat8,redis实现session共享,文件共享问题
- SharePoint REST API
- linux让history记录时间和把所有命令都记录到message