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

F Infinite String Comparision

官方题解:
• Compare the string a^{infty} and b^{infty} directly
• By the Periodicity Lemma, if there is no mismatches in the first a + b -gcd(a, b) characters, the two string are identical
主要是Periodicity Lemma这个知识点,简单地说就是在这里插入图片描述
具体推导看超链接里面
刚开始做是想通过把短的字符串加长再比较,但因为没考虑到他们长度倍数可能会大于2,因此一直段错误(好像不太好改,就放弃了这种做法)
然后换了一个新的做法,也就最朴素的一个一个字符比较,比较长度简单粗暴的选取最长的字符串的三倍(这个长度肯定大于gcd(p,q)+p+q)

代码:

#include<bits/stdc++.h>
using namespace std;
string a,b;
int l1,l2,f1,f2,f;
int main(){
    while(cin>>a>>b){
        l1=a.length(),l2=b.length(),f1=0,f2=0,f=0;
        int n=max(l1,l2);
        for(int i=0;i<3*n;i++){
            if(f1==l1)  f1=0;
            if(f2==l2)  f2=0;
            if(a[f1]==b[f2])    f1++,f2++;
            else    if(a[f1]>b[f2])  {cout<<">"<<endl;f++;break;}
            else    {cout<<"<"<<endl;f++;break;}
        }
        if(!f)  cout<<'='<<endl;
    }
}

J Easy Integration

推导结果为 (n!)^2 / (2n+1)!
具体解法有 伽马函数 华里士公式 以及 分部积分法(上学期明明很认真练习了分部积分和华里士公式结果还忘了这俩办法。。。)
欧拉积分,伽马函数、wallis公式联系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值