zoukankan      html  css  js  c++  java
  • D.Easy problem

    莫比乌斯反演
    欧拉降幂

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll ;
    const int mod = 59964251 ;
    const int N = 1e5 + 10 ;
    int prime[N] , vis[N] , mu[N] , tot , sum[N] ;
    ll qmi(ll a , ll b)
    {
    	ll res = 1 ; 
    	while(b)
    	{
    		if(b & 1) res = res * a % mod ;
    		a = a * a % mod ;
    		b >>= 1 ;
    	}
    	return res ;
    }
    void get()
    {
    	mu[1] = 1 ;
    	for(int i = 2; i < N ;i ++)
    	 {
    	 	if(!vis[i]) prime[++ tot] = i , mu[i] = -1 ;
    	 	for(int j = 1; j <= tot && i * prime[j] < N ;j ++)
    	 	 {
    	 	 	vis[i * prime[j]] = 1 ;
    	 	 	if(i % prime[j] == 0) break ;
    	 	 	mu[i * prime[j]] = -mu[i] ; 
    		  }
    	 }
    }
    int get_phi(int n)
    {
    	ll res = n ;
    	for(int i = 2; i * i <= n ;i ++)
    	 {
    	 	if(n % i == 0)
    	 	 {
    	 	 	res = res / (i) * (i - 1) ;
    	 	 	while(n % i == 0)
    	 	 	 n /= i ;
    		 }
    		if(n == 1) break ;
    	 }
    	 if(n > 1) res = res / n * (n - 1) ;
    	 return res ; 
    }
    int main()
    {
    	int T ;
    	get() ;
    
    	scanf("%d" , &T) ;
    	while(T --)
    	{
    		char s[110000] ;
    		int m , d , k ; 
    		
    		scanf("%s" , s) ;
    	
    		scanf("%d%d%d" , &m , &d , &k) ;
    		int len = strlen(s) ;
    		ll n = 0 ; 
    		ll phi = get_phi(mod) ;
    		
    		for(int i = 0 ;i < len ;i ++)
    		 {
    		 	n = n * 10 + s[i] - '0' ;
    		 	n %= phi ;
    		 }
    	    m /=d ;
    	    for(int i = 1; i <= m ;i ++)
    	     sum[i] = (sum[i - 1] + qmi(i , k)) % mod ;
    	    ll ans = 0 ;
    	    for(int i = 1; i <=  m ;i ++)
    	     
    	     	ans = (ans + mu[i] * qmi(i , k * n % phi + phi) % mod * qmi(sum[m / i] , n % phi + phi) % mod + mod) % mod ;
    		 
    		 ans = (ans * qmi(d , k * n % phi + phi)) % mod ;
    		 printf("%d
    " , ans) ;
    		 
    	}
    	return 0 ; 
    }
    
    每次做题提醒自己:题目到底有没有读懂,有没有分析彻底、算法够不够贪心、暴力够不够优雅。
  • 相关阅读:
    c++实验9 图及图的操作实验
    Html/CSS 示例演练 图书馆后台界面
    c++实验8 哈夫曼编码-译码器
    Html/CSS 初步介绍html和css部分重要标签
    c++实验7 二叉树
    JavaWeb -学生信息管理实践(JDBC+web+三层架构+DBUtil构造思路)
    java 实验6 图形用户界面设计试验(2)
    操作表与操作表数据行
    数据表操作练习
    数据库的介绍:
  • 原文地址:https://www.cnblogs.com/spnooyseed/p/12870866.html
Copyright © 2011-2022 走看看