【HDU】5321 Beautiful Set【枚举k求贡献,欧拉函数应用】
来源:互联网 发布:java图形界面代码 编辑:程序博客网 时间:2024/05/29 17:05
传送门: 【HDU】5321 Beautiful Set
#include <stdio.h>#include <string.h>#include <vector>#include <algorithm>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x , sizeof a )const int MAXN = 100005 ;const int mod = 258280327 ;bool prime[MAXN] ;int phi[MAXN] ;int cnt[MAXN] ;int id[MAXN] ;int f[MAXN] ;int vf[MAXN] ;int n ;void exgcd ( int a , int b , int& x , int& y ) { if ( b ) { exgcd ( b , a % b , y , x ) ; y -= a / b * x ; } else x = 1 , y = 0 ;}int inv ( int a ) { int x , y , b = mod ; exgcd ( a , b , x , y ) ; if ( x < 0 ) x += mod ; return x ;}int cmp ( int a , int b ) { return cnt[a] > cnt[b] ;}void calc () { for ( int i = 1 ; i < MAXN ; ++ i ) { id[i] = i ; for ( int j = i + i ; j < MAXN ; j += i ) { cnt[i] += cnt[j] ; } } sort ( id + 1 , id + MAXN , cmp ) ;}void preprocess () { f[0] = vf[0] = 1 ; for ( int i = 1 ; i < MAXN ; ++ i ) { phi[i] = i ; f[i] = ( LL ) i * f[i - 1] % mod ; vf[i] = inv ( f[i] ) ; } for ( int i = 2 ; i < MAXN ; ++ i ) if ( !prime[i] ) { for ( int j = i ; j < MAXN ; j += i ) { phi[j] = phi[j] / i * ( i - 1 ) ; prime[j] = 1 ; } }}int c ( int a , int b ) { return ( LL ) f[a] * vf[b] % mod * vf[a - b] % mod ;}void solve () { int x ; int ans1 = 0 , ans2 = 0 ; clr ( cnt , 0 ) ; for ( int i = 1 ; i <= n ; ++ i ) { scanf ( "%d" , &x ) ; cnt[x] ++ ; } calc () ; for ( int i = 1 ; i < MAXN ; ++ i ) { int tmp = 0 ; for ( int j = 1 ; j < MAXN ; ++ j ) { int idx = id[j] ; if ( cnt[idx] < i ) break ; int t = ( LL ) c ( cnt[idx] , i ) * phi[idx] % mod ; tmp = ( tmp + t ) % mod ; } ans2 = ( ans2 + ( LL ) i * tmp ) % mod ; tmp = ( LL ) tmp * f[i] % mod * f[n - i + 1] % mod ; ans1 = ( ans1 + tmp ) % mod ; } if ( ans1 > ans2 ) printf ( "Mr. Zstu %d\n" , ans1 ) ; else if ( ans1 < ans2 ) printf ( "Mr. Hdu %d\n" , ans2 ) ; else printf ( "Equal %d\n" , ans1 ) ;}int main () { preprocess () ; while ( ~scanf ( "%d" , &n ) ) solve () ; return 0 ;}
0 0
- 【HDU】5321 Beautiful Set【枚举k求贡献,欧拉函数应用】
- HDU 5321 Beautiful Set
- HDU 5321 Beautiful Set
- C. Beautiful Set----枚举
- HDU 5321 Beautiful Set 美丽集合
- hdu(欧拉函数应用,用筛法的方法求phi数组)
- (Relax 1.15)POJ 2773 Happy 2006(欧拉函数的应用:求与n互质的第k个数)
- GCD +hdu+欧拉函数的应用
- Hdu 2824 欧拉函数的应用
- HDU 2588 欧拉函数的应用
- hdu 2588 欧拉函数的应用
- HDU 2588 GCD 【利用欧拉函数求约数个数】
- HDU 2824 求区间欧拉函数和
- 欧拉函数应用
- 欧拉函数应用
- HDU 3501 Calculation 2(欧拉函数的应用)
- hdu 3501(欧拉函数的应用)
- HDU 1395 欧拉函数的基本应用
- 深入掌握JMS(四):实战Queue
- dp poj1948 Triangular Pastures
- GCD
- 深入掌握JMS(五):实战Topic
- git fatal: the remote end hung up unexpectedly
- 【HDU】5321 Beautiful Set【枚举k求贡献,欧拉函数应用】
- 欢迎使用CSDN-markdown编辑器
- 深入掌握JMS(六):消息头
- 关于java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor异常
- Git diff ^M的消除
- 关于花生壳进军硬件的问题
- 项目中用户的资源文件存放的规范配置文件
- 图像的几何不变矩
- eclipse 启动后,闪退