g题 1.题目大意:画出不同n的字符画

2.分析:我是按照从上到下从左至右的顺序先一个一个字符的存进数组中,然后输出。过程较为繁琐,中间还卡了一段时间。。。(可能这就是蒟蒻的烦恼

3.代码:

#include<algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=4*n+5;i++)
    {
        cout<<"*";
        if(i==1||i==4*n+5){
            for(int j=1;j<=13*n+17;j++)
                cout<<"*";
        }
        else if(i<=1+n||i>3*n+4){
            for(int j=1;j<=13*n+17;j++)
                cout<<".";    
        }
        else{
            for(int j=1;j<=n+1;j++){
                cout<<".";
            }
            cout<<"@";
            if(i==n+2||i==3*n+4){
                for(int j=1;j<=2*n+1;j++)
                    cout<<".";
            }
            else{
                for(int j=1;j<=2*n+1;j++){
                if(j==i-n-2)
                    cout<<"@";
                else
                    cout<<".";
                }
            }
            cout<<"@";
            for(int j=1;j<=n+1;j++){
                cout<<".";
            }
            cout<<"@";
            if(i==n+2||i==2*n+3){
                for(int j=1;j<=2*n+2;j++)
                    cout<<"@";
            }
            else{
                for(int j=1;j<=2*n+2;j++)
                    cout<<".";
            }
            for(int j=1;j<=n+1;j++)
                cout<<".";
            cout<<"@";
            if(i==3*n+4)
                for(int j=1;j<=2*n+2;j++)
                    cout<<"@";
            else
                for(int j=1;j<=2*n+2;j++)
                    cout<<".";
            for(int j=1;j<=n+1;j++)
                cout<<".";
 
            if((i>n+1&&i<=2*n+3)||i==3*n+4)
                cout<<"@";
            else
                cout<<".";
            if(i==n+2||i==2*n+3||i==3*n+4)
                for(int j=1;j<=2*n+2;j++)
                    cout<<"@";
            else if(i>2*n+3&&i<3*n+4){
                for(int j=1;j<=2*n+1;j++)
                    cout<<".";
                cout<<"@";
            }
            else
                for(int j=1;j<=2*n+2;j++){
                    cout<<".";
                }
            for(int j=1;j<=n+1;j++)
                cout<<".";
        }
        cout<<"*"<<endl;
    }
    return 0;
}

**j题**
1.题目大意:给你A,B,C三个数,然后你可以有两个操作选择:

①:B=A-B
②:C=B-C

如果你能将C变成x输出yes,否则输出no

2.分析:当时,我是先在纸上找出规律,然后发现x=k*(2B-A)+C或者k*(A-2B)+B-C,如果要输出yes就是k要为整数,及可以将式子变形,等价为模为0.当然当A=2B这种情况要特殊考虑。

3.代码:

``` js#include<iostream>
#include<math.h>
#include<algorithm>
typedef long long ll;
using namespace std;
int main(){
    ll t,a,b,c,x,i;
    scanf("%lld",&t);
    while(t--){
        scanf("%lld %lld %lld %lld",&a,&b,&c,&x);
        if(a-2*b==0){
            if(c==x||x==b-c)
                cout<<"Yes"<<endl;
            else
                cout<<"No"<<endl;
        }
        else if(a-2*b!=0){
            if(((x-c)%(2*b-a)==0)||((x+c-b)%(a-2*b))==0)
                cout<<"Yes"<<endl;
            else
                cout<<"No"<<endl;
        }
        else if(x==c||x==a+c-2*b||x==b-c)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
    return 0;
}