#YGAP11. 阅读题集锦(六)

阅读题集锦(六)

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin>>n;
    int a=n/1000;
    int b=n/100%10;
    int c=n/10%10;
    int d=n%10;
    cout<<d*1000+c*100+b*10+a;
    return 0;
}
//输入:5340

1.运行结果:{{ input(1) }}

#include<bits/stdc++.h>
using namespace std;
long long a,b;
int main() {
    scanf("%lld %lld",&a,&b);
    while(a!=b){
        if(a>b) a=a-b;
        else b=b-a;
    }
    printf("%lld",a);
    return 0;
}
//输入:100 12

2.运行结果:{{ input(2) }}

#include<bits/stdc++.h>
using namespace std;
int len,ans;
string t,s;
bool flag;
long long cn;
int main() {
    cin>>cn;
    while(cn--){
        cin>>s;
        len=s.size();
        for(int i=0;i<len;i++)
            t+=s[len-i-1];
        flag=true;
        for(int i=1;i<len;i++){
            if(abs(s[i]-s[i-1])!=abs(t[i]-t[i-1]))
                flag=false;
        }
        ans+=flag;
    }
    cout<<ans;
    return 0;
}
/*
  输入
  5
  acxz
  bcxz
  asdgqwe
  asdffe
  asde
 */

3.运行结果:{{ input(3) }}

#include<bits/stdc++.h>
using namespace std;
const int NN=111111;
int a[NN],pre[NN],suf[NN],st[NN];
int i,n,x,cnt,ans;
int Func(int x,int y){
    int res=x;
    if(x<y) res=y;
    return res;
}
int main() {
    scanf("%d",&n);
    for(i=1;i<=n;i++) scanf("%d",a+i);
    cnt=1;
    st[cnt]=n;
    for(i=n-1;i>=1;i--){
        x=a[i];
        while(cnt && (x>=a[st[cnt]])) cnt--;
        suf[i]=st[cnt];
        cnt++;
        st[cnt]=i;
    }
    cnt=1;
    st[cnt]=1;
    for(i=2;i<=n;i++){
        x=a[i];
        while(cnt && (x>=a[st[cnt]])) cnt--;
        pre[i]=st[cnt];
        cnt=cnt+1;
        st[cnt]=i;
    }
    for(i=1;i<=n;i++)
        ans=Func(ans,pre[i]*suf[i]);
    printf("%d",ans); 
    return 0;
}
/*
  输入
  5
  5 4 3 4 5
 */

4.运行结果:{{ input(4) }}

#include<bits/stdc++.h>
using namespace std;
long long x;
bool flag;
int main() {
    scanf("%lld",&x);
    flag=0;
    if(x%4==0 && x%100!=0) flag=1;
    if(x%400==0) flag=1;
    if(flag) printf("leap year!");
    else printf("not a leap year!");
    return 0;
}
//输入:1234

5.运行结果:{{ input(5) }}

#include<bits/stdc++.h>
using namespace std;
long long a[100][100];
long long i,j,n,t,x,y,cnt,ans;
int main() {
    scanf("%lld",&n);
    x=1,y=0;
    for(i=1;i<=n;i++){
        for(j=1;j<=n*2-i+1;j++){
            y++;
            cnt++;
            a[x][y]=cnt;
        }
        for(j=1;j<=n*2-i;j++){
            x++;
            cnt++;
            a[x][y]=cnt;
        }
        for(j=1;j<=n*2-i;j++){
            y--;
            cnt--;
            a[x][y]=cnt;
        }
        for(j=1;j<=n*2-i-1;j++){
            x--;
            cnt--;
            a[x][y]=cnt;
        }
    }
    scanf("%lld",&t);
    ans=0;
    for(i=1;i<=n*2;i++) ans+=a[t][i];
    printf("%lld\n",ans);
    return 0;
}
//输入:3 2

6.运行结果:{{ input(6) }}

#include<bits/stdc++.h>
using namespace std;
int f(int x){
    if(x==0) return 0;
    else if(x%2==0) return f(x-1)+2;
    else return f(x-1)+1;
}
int main() {
    int t;
    cin>>t;
    cout<<f(t);
    return 0;
}
//输入2014

7.运行结果:{{ input(7) }}

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int c[N],q[N],d[N],e[N],ans[N];
int n;
void merge(int L,int R){
    int mid=(L+R)/2;
    if(L<mid) merge(L,mid);
    if(mid+1<R) merge(mid+1,R);
    int p=0,i=L,j=mid+1;
    while(i<=mid && j<=R){
        if(c[i]>=c[j]){
            d[++p]=c[i];
            e[p]=q[i++];
        }else{
            d[++p]=c[j];
            e[p]=q[j++];
            ans[e[p]]+=(mid-i+1);
        }
    }
    while(i<=mid && j>R){
        d[++p]=c[i];
        e[p]=q[i++];
    }
    while(i>mid && j<=R){
        d[++p]=c[j];
        e[p]=q[j++];
    }
    for(i=L;i<=R;i++){
        c[i]=d[i-L+1];
        q[i]=e[i-L+1];
    }
}
int main() {
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>c[i];
        q[i]=i;
    }
    merge(1,n);
    for(int i=1;i<=n;i++) cout<<ans[i];
    return 0;
}
/*
  输入
  5
  4 3 1 2 5
 */

8.运行结果:{{ input(8) }}