总结:4.19晚算是V了一场吧,在宿舍做不下去,前三题挺简单的,卡在了D题,先不明白为什么要这样做,这个结论是怎么得出来的???
A. A+B?
思路:水题。。。scanf格式化输入就可以了~
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int T;
cin>>T;
while(T--){
int a,b;
scanf("%d+%d",&a,&b);
cout<<a+b<<'\n';
}
return 0;
}
B. Matrix Rotation
思路:因为可以旋转,经过观察可以发现规律,上行和下行(如a和c,b和d)的关系相同,左列和右列(如a和b,c和d)的关系相同,同大同小
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int T;
cin>>T;
while(T--){
int a,b,c,d;
cin>>a>>b>>c>>d;
if((a>b&&c<d)||(a<b&&c>d)||(a>c&&b<d)||(a<c&&b>d)){
cout<<"NO"<<'\n';
}else{
cout<<"YES"<<'\n';
}
}
}
C. Different Differences
思路:WA了几发,没注意代码中数组的边界。。。其实输出的前几个数为一个斐波那契数列,先初始化一个数组为斐波那契数列,然后判断到最大值还有几个数可以输出
#include<iostream>
using namespace std;
const int N=45;
int a[N];
int main(){
int T,k,n;
a[1]=1;
for(int i=2;i<=40;i++){
a[i]=a[i-1]+i-1;
}
cin>>T;
while(T--){
int t=0;
cin>>k>>n;
for(int i=1;i<=k;i++){
if(n-a[i]<k-i){
cout<<++t<<' ';
}else{
t=a[i];
cout<<a[i]<<' ';
}
}
cout<<'\n';
}
return 0;
}
D. Absolute Sorting
实在是没有思路,卡死我了,不知道为什么要这样处理。。。。。