2020牛客暑期多校训练营(第一场)(F,J)

F、 Infinite String Comparision

图片说明
题意:有两个字符串,这两个字符串都可以在自身基础之上进行无限次重复,求比较这两个字符串无限次重复之后的大小
思路:我们可以发现,两个字符串都是以自身为周期进行向外扩展,如果两个字符串最后比下来的结果是相同的话,那么它们肯定是可以在两个字符串的第一个周期之内就能比出大小来,也就是最差最差就是把最长的那个原始字符串比较之后就能比出了。我们用双指针来维护一下就行了。
代码:

#include<iostream>
using namespace std;
int main(){
    string a,b;
    while(cin>>a>>b){
        int len1=a.size();
        int len2=b.size();
        int k1=0,k2=0;  //我们用k1指向a字符串,k2指向b字符串
        while(1){
            if(a[k1%len1]<b[k2%len2]){   //注意维护下标
                cout<<"<"<<endl;
                break;
            }
            else if(a[k1%len1]>b[k2%len2]){
                cout<<">"<<endl;
                break;
            }
            k1++,k2++;
//也就是我们至多在两个周期之内就能比较出两者的大小
            if(len1<len2){
                if(k2==2*len2){
                    cout<<"="<<endl;
                    break;
                }
            }
            else{
                if(k1==2*len1){
                    cout<<"="<<endl;
                    break;
                }
            }
        }
    }
    return 0;
}

J、 Easy Integration

图片说明

题意:求出图片说明 这个表达式关于n的一个关系是,然后对mod求逆元就行了。
思路:比赛的时候懵了,完全没想到求定积分,而是一味地在找规律。赛后看题解才恍然大悟。
最后我们求到了这个关于n的表达式,我们现预处理阶乘,然后求逆元即可。
代码:

#include<iostream>
using namespace std;
typedef long long ll;
const int mod=998244353;
const int maxn=2e6+5;
ll f[maxn];

ll binarypow(ll a,ll b){
    if(b==0)  return 1;
    if(b&1)  return a*binarypow(a,b-1)%mod;
    else{
        ll mul=binarypow(a,b/2);
        return mul*mul%mod;
    }
}

int main(){
    int n;
    f[0]=1;
    for(int i=1;i<=maxn;i++){
        f[i]=f[i-1]*i%mod;
    }
    while(cin>>n){
        ll up=(f[n]*f[n])%mod;
        ll down=f[2*n+1]%mod;
        ll ans=binarypow(down,mod-2);
        ans=ans*up%mod;
        cout<<ans<<endl;
    }
    return 0;
}
全部评论

相关推荐

07-18 14:34
门头沟学院 Java
感觉招聘要求好高,这都是招什么人才
电气电子小朋友:你都说了这是大疆,无人机顶级企业,薪资30k-50k,要求高是正常的
点赞 评论 收藏
分享
来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-16 12:18
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务