首页 > 其他分享 >iwtgm-7

iwtgm-7

时间:2023-11-02 13:34:59浏览次数:26  
标签:return int sq iwtgm void ans ll

题目链接

N.

因为输入只有两个字母,结果最多只有两位数,可以直接写答案

void solve(){
    char x,y;cin>>x>>y;
    int xx=x-'A',yy=y-'A';
    int ans=xx+yy;
    if(ans<26)cout<<(char)('A'+ans);
    else {
        ans-=26;
        cout<<'B'<<(char)('A'+ans);
    }
}

再写了一个可以处理更多字母的:
相当于10进制和26进制的转换,把输出转成字母就好了

int to10(string s){
    int ans=0;
    for(int i=s.size()-1;i>=0;i--){
        ans*=26;
        ans+=(s[i]-'A');
    }
    return ans;
}
string toc(int x){
    stack<char>st;
    if(x==0){
        return "A";
    }
    while(x) {
        st.push((char) ('A' + (x % 26)));
        x/=26;
    }
    string ans="";
    while(st.size()){
        ans.push_back(st.top());st.pop();
    }
    return ans;
}
void solve()
{
    string a,b;cin>>a>>b;
    int aa=to10(a),bb=to10(b);
    int c=aa+bb;
    cout<<toc(c);
}

C.

因为结果要求排列升序或降序,操作是反转
但是如果不是连续的序列(1,2,3是连续的,1,3,4不是因为1和3相差2)即使反转也没有用
所以遍历,如果不是连续的(后一个数比前一个数大1或小1),就一定要花费1次操作

int a[N];
void solve(){
    int n;cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    int ans=0;
    for(int i=2;i<=n;i++){
        if(a[i]==a[i-1]-1||a[i]==a[i-1]+1)continue;
        else ans++;
    }
    cout<<ans;
}

K.

自己写的是组合数

ll sq[25];
ll n;
ll C(ll x){
    if(x==n)return 1;
    ll tmp=n-x;
    x=min(tmp,x);
    return (sq[n]/sq[n-x]/sq[x]);
}
void solve(){
    sq[0]=1;
    for(ll i=1;i<=20;i++)sq[i]=sq[i-1]*i;
    cin>>n;
    ll ans=0;
    for(ll i=1;i<=n;i++){
        ans+=C(i);
    }
    cout<<ans;
}

谁成想,pow(2,a)-1一个式子就够了,有被气炸
每道题都有选或不选两种情况就是2^a,减去全都不选这一不合法的情况即为答案

void solve(){
    int a;cin>>a;
    ll ans=pow(2,a)-1;
    cout<<ans<<endl;
}

标签:return,int,sq,iwtgm,void,ans,ll
From: https://www.cnblogs.com/wwww-/p/17796414.html

相关文章

  • iwtgm-6
    题目链接A.感觉1和2非常神奇,可以得到非常神奇的结论,自我猜想可能是因为首先它们的值很小,那么可以表示的范围非常大,然后可以改变奇偶性,范围就更大了这题的结论就是连续1的个数/3先特判第一步是1一定有一个贡献然后加上后面连续1的个数/3voidsolve(){intn,ans;cin>>......
  • iwtgm-5
    题目链接A.个数为1的数一定会产生贡献,记为x个数为2的数一定不会产生贡献,直接全部放入集合a个数>2的数可产生也可不产生贡献,记为y分类讨论:x>0:x为偶数,那么a,b集合平分x,其他全部放入a集合(反正不会有贡献)x为奇数,需要多一个y放入b,x<0,全放入a集合代码:intcnt[110];inta[110......
  • iwtgm-4
    CodeforcesBetaRound73(Div.2Only)B.数据小,暴力一点的方式更好写,自己写的优化一点的出现跑不出来的情况优化是把所有当前字母的位置和S的位置算一个距离,取最小确实预处理出最短距离进行映射会更好intn,m,len,vis[27],ans;doubledis[27],x;charmp[35][35];double......
  • iwtgm-10
    题目链接A.手玩,左右循环后对应位置字符相同,可得到:如果只有两个字符一定可以如果是奇数,那么必须全部相同如果是偶数,那么奇数位置的要全部相同,偶数位置的要全部相同卡的点是相对位置不变,可以删除任意位置,如何判奇数全部相同,偶数全部相同后来看@zys111代码,因为只有两种字符(可......
  • iwtgm-9
    题目链接dp,自己写的时候没有考虑完全状态转移,其实是滑动窗口dp,需要维护一段区间的最小值1-n内的数显然能一步得到,考虑n+1到y,可由前面的状态加数得到也可以乘数得到,考虑加,其实是区间长度为n的滑动窗口的最小值+1考虑乘,若当前数i能整除mi,则dp[mi]+1inta[N],dp[N],q[N],tt=-1,......
  • iwtgm-8
    题目链接A.模拟,先遍历一遍,出现0,则i+x和i-x存在则必是0再遍历一遍,出现1,判i+x和i-x位上若已经是1或还没被赋值则满足题意,否则失败退出输出是当前位是1,则输出1,否则输出0.因为1的限制范围明确,其余都填0voidsolve(){strings;cin>>s;intx;cin>>x;charc[N];......