这次有几题做个笔记

驴哒, Homework
Back

交换字符

#include <bits/stdc++.h>
using namespace std;
int main(void) { 
    int a,i,j,y = 0,x = 0; 
    char str[300001]; 
    scanf("%s",&str); //读入字符串
    a = strlen(str); 
    for(i = 0;i<a;i++) { 
        if(str[i]=='y') 
            y++; //计算y的个数
        else if(str[i]=='x') 
            x++; //计算x的个数
        else 
            break; //到z退出,因为z后面的x无法到z前面
    } 
  
    //y可以自由在x和z间移动
    //以i为分界线,str[i]处是z
    
    for(j = i+1;j<a;j++) { 
        if(str[j]=='y') 
            y++; //计算z后面的y的个数
    } 
    for(j = 0;j<x;j++) 
        printf("x"); //输出z前面的x
    for(j = 0;j<y;j++) 
        printf("y"); //输出z前面的y
    for(j = i;j<a;j++) { 
        if(str[j]!='y') 
    printf("%c",str[j]); //输出z后x和z的混合体
    } 
    return 0; 
}

快乐数

暴力不要暴力错方向了咩(有人从区间里的每个数去下手我不说是谁)

#include <bits/stdc++.h>
using namespace std; 
typedef long long ll;

ll l,r,s,v;

int main() {
    while(scanf("%lld %lld",&l,&r)!=EOF){
        s=0;
        for(ll i=1;i<=r;i<<=1){
            for(ll j=1;j<=r;j*=3){
                v=i*j;
                if(v<=r&&v>=l){
                    s++;
                }else if(v>r)break;
            }
        }
        printf("%lld\n",s);
    }

    return 0;
}

刷题那道题我是在草稿纸上列出前几项找规律的

© 驴哒.RSS