题目链接
题意:给7个从小到大的数,是由x,y,z,x+y,x+z,y+z,x+y+z组成的,求出x,y,z;
思路:由于是从小到大给的序列,所以第一个数就是三个数当中最小的,假设序列从大到小依次为a[0]-a[6];所以x就是a[6],而第三大的数就是a[2]就是x+y,所以y就等于a[2]-a[6],就差一个z不知道,但是知道三个数的和以及x,y的和,所以a[0]-a[2]就是z的值
#includeusing namespace std; int main() { int t; cin>>t; while(t--){ int a[7]; for(int i=6;i>=0;i--){ cin>>a[i]; } cout<
题目链接
题意:有一个字符串仅有ab组成,先输入该字符串的长度,然后给定长度为2的子串,子串的长度固定为2,给length-2个这样的子串,而字符串本身有length-1个这样的子串,有一个没给,让我们来判断这个字符串可能是什么样子的。
思路:一共有三种情况
第一种:当输入的是aa或者bb的时候判断一下s的最后一个字母是不是跟当前输入的字母一样,如果一样的话就比如s=ab(当前的字符串),ss(输入的子串)=bb,这个时候就加一个b,s变成abb;
第二种:当输入的两个字母不一样,但是当前字符串的最后一个字符等于输入的第一个字符,就加输入子串的第二个字符,s=abb,ss=ba;s变成abba;
第三种:当输入的两个字母不一样,并且当前字符串的最后一个字符不等于输入的第一个字符,就直接拼接,s=abb,ss=ab;s变成abbab;
最后判断字符串s的长度是否符合要求,如果不符合的话在字符串的末尾继续补最后一个字母,最后一个字母是a就补a,是b就补b;
#includeusing namespace std; int main() { int n; cin>>n; while(n--){ string s,ss; int t; cin>>t; for(int i=0;i >ss; if(ss[0]==ss[1]&&ss[0]==s[s.length()-1]) s+=ss[0]; else{ if(ss[0]==s[s.length()-1]) s+=ss[1]; else s+=ss; } } char temp=s[s.length()-1]; for(int i=s.length();i



