• 【牛客7872 A】离散化-求一个数列第b项是第a项的多少倍


    【牛客7872 A】离散化-求一个数列第b项是第a项的多少倍

    传送门

    题意

    一个数列,初值为1,递推公式为(a[n]=a[n-1]*a[n-1]+a[n-1])

    求第b项是第a项的多少倍,a和b的范围是1e8,1e5组询问

    显然可以初始处理出第1项~第1e8项的值(取模)

    然后取我们需要的,取的这个过程需要离散化一下提高效率,把所有询问到的点存在一个c数组里,排个序,在初始处理的时候碰到这个数组里的值就把这个答案记下来
    初始化完成后就可以对每一组询问计算答案即可

    哔哔赖赖

    据说还可以map搞一下,下次再说咕咕咕

    Code

    /****************************
    * Author : W.A.R            *
    * Date : 2020-10-31-22:27   *
    ****************************/
    /*
    */
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<map>
    #include<stack>
    #include<string>
    #include<set>
    #define IOS ios::sync_with_stdio(false)
    #define show(x) std:: cerr << #x << " = " << x << std::endl;
    #define mem(a,x) memset(a,x,sizeof(a))
    #define Rint register int
    using namespace std;
    typedef long long ll;
    const int maxn=1e6+10;
    const int maxm=2e6+10;
    const ll mod=1e9+7;
    const double PI=acos(-1.0);
    const double eps=1e-7;
    ll qpow(ll a,ll n){a%=mod;ll ans=1;while(n){if(n%2)ans=ans*a%mod;n/=2;a=a*a%mod;}return ans;}
    
    ll a[maxn],b[maxn],c[maxn],ans[maxn];
    int main(){
    	int T=read(),ct=0;
    	for(int i=1;i<=T;i++)a[i]=read_ll(),b[i]=read_ll(),c[++ct]=a[i],c[++ct]=b[i];
    	sort(c+1,c+1+ct);
    	ct=unique(c+1,c+1+ct)-c-1;
    	show(ct);
    	int index=1;
    	ll x=1;
    	for(int i=0;i<=1e8;i++){
    		if(i!=0)x=(x*x%mod+x%mod)%mod;
    		if(index<=ct&&c[index]==i)ans[index]=x,index++;
    	}
    	for(int i=1;i<=T;i++){
    		if(a[i]>b[i])swap(a[i],b[i]);
    		int fa=lower_bound(c+1,c+1+ct,a[i])-c;
    		int fb=lower_bound(c+1,c+1+ct,b[i])-c;
    		show(ans[fa]);
    		show(ans[fb]);
    		printf("%lld
    ",ans[fb]*qpow(ans[fa],mod-2)%mod);
    	}
    	return 0;
    }
    
  • 相关阅读:
    JAVA的显式锁
    JAVA线程池
    多线程中的各种锁
    《深入理解JAVA虚拟机》第三版 第七,八章 要点总结
    《深入理解JAVA虚拟机》第三版 第六章 要点总结
    JVM垃圾收集器总结
    《深入理解JAVA虚拟机》第三版 第二,三章 要点总结
    Map接口的实现类
    博客收藏列表
    毕设开发日志2017-12-28 完成!
  • 原文地址:https://www.cnblogs.com/wuanran/p/13908087.html
Copyright © 2020-2023  润新知