A.Domino Disaster
看样例就知道:就是让你U变D,D变U,其他的不变
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
string s;
cin>>s;
for(int i=0;i<=n-1;i++)
{
if(s[i]=='D')
cout<<"U";
else if(s[i]=='U')
cout<<"D";
else
cout<<s[i];
}
cout<<endl;
}
}
B.MEXor Mixup
大致意思就是给定两个数a,b分别表示某一列数的MEX和XOR
MEX就表示这一列数未出现过的最小自然数
XOR表示这一列数中所有数的异或值
让你求出这一列数的最小长度
思路:
首先预处理所有连续数的异或值(到3e5)
如果位数-1等于给定的异或值,则输出a(因为包括0)
如果位数-1再异或b等于给定的异或值,则输出a+2
其余的输出a+1即可(包括0,1,2,…MEX-1和XOR一共a+1个数)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int a[300007];
a[0]=0;
for(ll i=1; i<=300001; i++)
a[i]=(a[i-1]^i);
int t;
cin>>t;
while(t--)
{
int c,b;
cin>>c>>b;
ll ans=0;
if((a[c-1]^b)==c)
ans=c+2;
else if(a[c-1]==b)
ans=c;
else ans=c+1;
cout<<ans<<endl;
}
}
C. Carrying Conundrum
给定一个运算形式:进位的时候不是向上一位进位,而是进两位,就是说将所有的进位往左移一位,给定一个按此方法进位得到的计算答案,问原本可能有多少种数字组合?(a,b)(b,a)算两种
思路:
奇偶不会互相影响,分别算出来然后结合样例就推出来了hhhh
抄了官方题解的一段补充:
n=12345 ;
12345→135,24.
45+90=135 and 9+15=24,
495+1950 =12345
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll t;
cin>>t;
while(t--)
{
int n;
cin>>n;
ll a=0,b=0,tmp=0,ans1=1,ans2=1;
for(int i=1;; i++)
{
tmp=n%10;
if(i%2==1)
a+=tmp*ans1,ans1*=10;
else
b+=tmp*ans2,ans2*=10;
n=n/10;
if(n<=0)
break;
}
cout<<(a+1)*(b+1)-2<<endl;
}
}
D. Expression Evaluation Error
给定a,b两个数,要求把a分成b组(每一组都必须大于等于1),让b组数之和等于a,求一种分法,使得所有的数转换为十一进制后按照11进制的规则进行计算,之后再将其转换为十进制得到的数最大。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll num[108]= {0},a[100009];
ll sum=0;
void chai(ll x)
{
int cnt=0;
while(x)
{
a[++cnt]=x%10;
sum+=a[cnt];
x/=10;
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
num[1]=1;
for(int i=2; i<=10; i++)
num[i]=num[i-1]*10;
ll n,k,temp;
cin>>n>>k;
temp=n;
sum=0;
ll ans=0,anss=0;
chai(temp);
while(sum<k)
{
for(int i=2; i<=10; i++)
{
if(a[i])
{
a[i]--;
a[i-1]+=10;
sum+=9;
break;
}
}
}
for(int i=1; i<=10; i++)
{
for(int j=1; j<=a[i]; j++)
{
if(anss==k-1)
goto aa;
cout<<num[i]<<" ";
ans+=num[i];
anss++;
}
}
aa:;
cout<<n-ans<<endl;
}
}