首先,用一个桶数组表示26个字母在s1的个数
然后,用这个桶数组在s2里去做减法
如果,有一个元素他小于0了,就是“NO”;
最后,用flag标记,输出NO的为0,输出YES的为1;
输出即可
根据解析写代码1:
#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int a[1010];
int main(){
int t;
cin>>t;
getchar();
while(t--){
getline(cin,s1);
int len1=s1.length();
getline(cin,s2);
int len2=s2.length();
memset(a,0,sizeof(a));
for(int i=0;i<len1;i++){
if(s1[i]==' '){
continue;
}
a[s1[i]]++;
}
for(int i=0;i<len2;i++){
if(s2[i]==' '){
continue;
}
a[s2[i]]--;
}
bool flag=0;
for(int i=1;i<=1010;i++){
if(a[i]<0){
flag=1;
}
}
if(flag==1){
cout<<"NO\n";
}else{
cout<<"YES\n";
}
}
return 0;
}
根据解析写代码2:
#include <bits/stdc++.h>
using namespace std;
const int N=1e6;
int a[N];
int b[N];
int s[N];
int t[N];
int ans[N];
int main(){
long long n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
s[a[i]]=b[i];
t[a[i]]++;
t[b[i]]--;
}
long long first=0;
for(int i=1;i<=n;i++){
if(t[a[i]]==1){
first=a[i];
}
}
long long now=0;
for(int i=0;i<=n;i+=2){
ans[i]=now;
now=s[now];
}
now=first;
for(int i=1;i<=n;i+=2){
ans[i]=now;
now=s[now];
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
return 0;
}
此题为水题,不讲解
提示:
a=b 时,输出a;
a!=b时,输出_.
根据提示写代码3:
#include <bits/stdc++.h>
using namespace std;
string a;
string b;
int main(){
long long t;
cin>>t;
for(int i=1;i<=t;i++){
cin>>a>>b;
if(a==b){
cout<<a<<'\n';
}else{
cout<<1<<'\n';
}
}
return 0;
}
根据解析写代码4:
#include <bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int a[N];
int b[N];
int main(){
int t;
int n;
cin>>t;
while(t--){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=a[i];
}
b[1]=1-b[1];
b[2]=1-b[2];
for(int i=2;i<=n;i++){
if(b[i-1]==0){
b[i-1]=1-b[i-1];
b[i]=1-b[i];
b[i+1]=1-b[i+1];
}
}
if(b[n]==1){
cout<<"Yes\n";
continue;
}
for(int i=1;i<=n;i++){
b[i]=a[i];
}
for(int i=2;i<=n;i++){
if(b[i-1]==0){
b[i-1]=1-b[i-1];
b[i]=1-b[i];
b[i+1]=1-b[i+1];
}
}
if(b[n]==1){
cout<<"Yes\n";
continue;
}
cout<<"No\n";
}
return 0;
}
实际上就是十进制转二进制,然后用数组把二进制每一位存起来
最后循环到k,用cnt加上数组到k的和
就行了。
根据解析写代码5:
#include <bits/stdc++.h>
using namespace std;
long long a[110];
int main(){
long long n,k;
cin>>n>>k;
int t=1;
long long cnt=1;
while(n>0){
if(n%2==1){
a[t++]=cnt;
}
cnt*=2;
n/=2;
}
long long ans=0;
for(int i=1;i<=k;i++){
ans+=a[i];
}
cout<<ans;
return 0;
}