• 【NOIp模拟赛】antipalindrome


    分析

    知识点:排列组合问题。

    本题貌似和回文字符串没有太大的关系。

    仔细划一下应该就能知道最后的答案是:$ans=m*(m-1)*(m-2)*....*(m-2)$

    但是还是有很多坑的,数据很强一个想不到就会WA声一片。

    1.要特判n==1的情况 此时答案就是$m%mod$。

    2.m==1的情况就不用特判了,因为m==1的话,$m-1=0$,所以答案最终是0。

    3.注意中间过程的溢出,做数论的题目一定要注意这一点。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const ll mod=1e9+7;
    inline ll read()
    {
        register ll x=0,f=1; char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    ll n,m,ans;
    ll power(ll a,ll p){
        ll res=1,base=a%mod;//防止中间过程溢出
        for(register ll i=p;i;i=i>>1,base=base*base%mod)
        if(i&1) res=res*base%mod;
        return res;
    }
    int main()
    {
        freopen("anti.in","r",stdin);
        freopen("anti.out","w",stdout);
        register int T=read();
        while(T--){
            n=read();m=read();
            if(n==1) ans=m%mod;
            else{
                ans=power(m-2,n-2);
                ans=(ans*(m%mod))%mod;//最好分步做,清晰不容易出错
                ans=(ans*((m-1)%mod))%mod;//防止溢出
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
    欢迎转载,转载请注明出处!
  • 相关阅读:
    js事件列表
    PS快捷键
    去水印六种方法
    ps素材网站
    颜色搭配
    收集的各大官网的样式初始化
    目前公司用到的PC端和移动端的初始化样式
    CSS背景图拉伸自适应尺寸,全浏览器兼容代码
    队列的优化链式实现
    队列的优化顺序实现
  • 原文地址:https://www.cnblogs.com/huihao/p/7637127.html
Copyright © 2020-2023  润新知