AtCoder Beginner Contest 179

AtCoder Beginner Contest 179

A - Plural Form

#include <bits/stdc++.h>

#define int ll
//#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
const int mod=998244353;

void solve() {
    
    
    string s;
    cin>>s;
    cout<<s<<(s.back()=='s'?"es":"s");
}

signed main() {
    
    
    //ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int _ = 1;
    //cin >> _;
    while (_--) {
    
    
        solve();
    }
    return 0;
}

B - Go to Jail

#include <bits/stdc++.h>

#define int ll
//#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
const int mod=998244353;

void solve() {
    
    
    int n;
    cin>>n;
    int flag=0;
    for(int i=0;i<n;i++){
    
    
        int d1,d2;
        cin>>d1>>d2;
        if(d1==d2) flag++;
        else flag=0;
        if(flag==3) break;
    }
    cout<<(flag==3?"Yes":"No");
}

signed main() {
    
    
    //ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int _ = 1;
    //cin >> _;
    while (_--) {
    
    
        solve();
    }
    return 0;
}

C - A x B + C

#include <bits/stdc++.h>
#define int ll
using namespace std;
typedef long long ll;
const int maxn=1e5+5;

void solve(){
    
    
    int n;
    cin>>n;
    int sum=0;
    for(int i=1;i<n;i++) sum+=(n-1)/i;
    cout<<sum;
}

signed main() {
    
    
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int _ = 1;
    //cin >> _;
    while (_--) solve();
    return 0;
}

D - Leaping Tak

#include <bits/stdc++.h>

#define int ll
using namespace std;
typedef long long ll;
const int maxn = 2e5 + 10;
const int mod = 998244353;

int l[maxn], r[maxn], sum[maxn], dp[maxn];

void solve() {
    
    
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= k; ++i) cin >> l[i] >> r[i];
    sum[1] = 1;
    for (int i = 2; i <= n; ++i) {
    
    
        for (int j = 1; j <= k; ++j)
            dp[i]=(dp[i]+sum[max(0ll, i-l[j])]-sum[max(0ll, i-r[j]-1)])%mod;
        sum[i] = (sum[i - 1] + dp[i]) % mod;
    }
    cout << (dp[n] + mod) % mod;
}

signed main() {
    
    
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int _ = 1;
    //cin >> _;
    while (_--) solve();
    return 0;
}
#include <bits/stdc++.h>

#define int ll
using namespace std;
typedef long long ll;
const int mod = 998244353;
const int maxn = 2e5 + 10;

vector<pair<int,int> >vv;
int tree[maxn * 4];
int lazy[maxn * 4];
int dp[maxn];

void init() {
    
    
    vv.clear();
}

void pushdown(int t) {
    
    
    if(lazy[t]==0) return ;
    lazy[t << 1] +=lazy[t];
    lazy[t<<1]%=mod;
    lazy[t << 1 | 1] +=lazy[t];
    lazy[t<<1|1]%=mod;
    tree[t << 1] +=lazy[t];
    tree[t<<1]%=mod;
    tree[t << 1|1] += lazy[t];
    tree[t<<1|1]%=mod;
    lazy[t]=0;
}

int query(int l, int r, int t, int L, int R) {
    
    
    if (l >= L && r <= R) return tree[t];
    if (l > R || r < L) return 0;
    int mid = (l + r) >> 1;
    int d = 0;
    pushdown(t);
    if (mid >= L) d = max(d, query(l, mid, t << 1, L, R));
    if (mid < R) d = max(d, query(mid + 1, r, t << 1 | 1, L, R));
    return d;
}

void update(int l, int r, int t, int L, int R, int d) {
    
    
    if(L>r||R<l) return ;
    if (l >= L && r <= R) lazy[t] += d,lazy[t]%=mod, tree[t]+=d,tree[t]%=mod;
    else {
    
    
        pushdown(t);
        int mid = (l + r) >> 1;
        if (mid >= L)update(l, mid, t << 1, L, R, d);
        if (mid < R) update(mid + 1, r, t << 1 | 1, L, R, d);
    }
}

void solve() {
    
    
    int n,k;
    cin>>n>>k;
    for (int i = 1; i <= k; ++i) {
    
    
        int l,r;
        cin>>l>>r;
        vv.push_back({
    
    l,r});
    }
    dp[1]=1;
    update(1,n,1,1,1,1);
    for (int i = 1; i <=n; ++i) {
    
    
        for (int j = 0; j < vv.size(); ++j) {
    
    
            pair<int ,int > xx=vv[j];
            if(i!=1) dp[i]=query(1,n,1,i,i)%mod;
            if(dp[i]!=0) update(1, n, 1, i + xx.first, i + xx.second, dp[i]);
        }
    }
    cout<<dp[n];
}

signed main() {
    
    
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int _ = 1;
    //cin >> _;
    while (_--) {
    
    
        init();
        solve();
    }
    return 0;
}

E - Sequence Sum

#include <bits/stdc++.h>

#define int ll
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
const int mod = 998244353;

int sum[maxn];
int f[maxn];

void solve() {
    
    
    int n,x,m;
    cin>>n>>x>>m;
    int xx=x,ans,bns;
    for (int i = 1;; ++i) {
    
    
        if(!f[xx]) f[xx]=i;
        else{
    
    
            ans=f[xx],bns=i-1;
            break;
        }
        sum[i]=sum[i-1]+xx;
        xx=xx*xx%m;
    }
    int res=sum[min(n,ans-1)];
    int len=bns-ans+1;
    if(n>ans-1) res+=(sum[bns]-sum[ans-1])*((n-ans+1)/len)+(sum[(n-ans+1)%len+ans-1]-sum[ans-1]);
    cout<<res;
}

signed main() {
    
    
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int _ = 1;
    //cin >> _;
    while (_--) solve();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45436102/article/details/109553545