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;
}