Codeforces Round #629 (Div. 3)
0、前序
本蒟蒻最近CF接连滚粗,于是难得有Div.3,就准备过来打打继续滚粗
1、A Divisibility Problem
题意:
tt个询问,每次两个数aa,bb,每次操作可以把a+1a+1,求多少次操作后使得aa被bb整除。
思路:
真·签到题。
因为只有加,所以我们将aa加至大于aa且能被bb整除的数,输出即可。
code:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <queue>
using namespace std;
int T;
int a,b;
int main()
{
cin>>T;
while(T--)
{
cin>>a>>b;
if(a%b!=0)
{
int temp=(a+b)%b;
cout<<b-temp<<endl;
}
else
cout<<0<<endl;
}
return 0;
}
2、B.K-th Beautiful String
题意:
有一个长度为nn的字符串,里面有n−2n−2个'aa'和22个'bb'。
求将这些数排列形成的n(n−1)2n(n−1)2个字符串中,字典序的第kk个字符串是什么。
共TT个询问。
思路:
话说这题卡ULL真的强...
十分钟推出了规律,七十分钟调ULL
找规律不难看出,将aaaa.....ab₁b₂转化成aaa....b₁b₂a需要(n−b₁)(n−b₁−1)2步,而那个b₂的位置就是将b₁处理完后n-剩下的数。
code:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <queue>
using namespace std;
unsigned long long T,n,k; //不开ull见祖宗
int main()
{
cin>>T;
while(T--)
{
cin>>n>>k;
unsigned long long temp=0,temp2=0;
for(unsigned long long i=n;i>=1;i--)
{
if(k<=i*(i-1)/2)
{
temp=i;
temp2=k-((i-1)*(i-2)/2);
}
}
for(unsigned long long i=1;i<=n;i++)
{
if(i==n-temp+1||i==n-temp2+1)
cout<<'b';
else
cout<<'a';
}
cout<<endl;
}
return 0;
}
3、C.Ternary XOR
题意:
T个询问,每次询问给定字符串s,要求出字符串a,b,使得(a[i]+b[i]),注意要使得a,b中的最大值最小。首位不可为0。
思路:
反正就三种:s[i]为0,1,2中的一个,分类讨论。
举个栗子:s[i]为1时
如果i为1,那么一定为(2+2)%3=1
否则,假定我们最后将a字符串设为偏大的。
如果f=1,表示a字符串已经比b大了,高位大>低位大,1+0<2+2,所以把0扔给a,1扔给b。
否则,将1给a,0给b,f=1,表示a比b开始大了。
下面对s[i]为2或3时,也这样分类讨论。注意前导0的问题
code:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <queue>
using namespace std;
int T,len;
string s;
int main()
{
cin>>T;
while(T--)
{
cin>>len;
cin>>s;
string a="0",b="0";
int f=0;
for(int i=0;i<len;i++)
{
if(s[i]=='0'&&i==0)
{
a+="2";
b+="1";
f=1;
}
else if(s[i]=='0')
{
a+="0";
b+="0";
}
else if(s[i]=='1'&&i!=0)
{
if(f==1)
{
a+="0";
b+="1";
}
else
{
a+="1";
b+="0";
f=1;
}
}
else if(s[i]=='1'&&i==0)
{
a+="2";
b+="2";
}
else if(s[i]=='2'&&i==0)
{
a+="1";
b+="1";
}
else if(s[i]=='2'&&i!=0)
{
if(f==1)
{
a+="0";
b+="2";
}
else
{
a+="1";
b+="1";
}
}
}
for(int i=1;i<=len;i++)
{
cout<<a[i];
}
cout<<endl;
for(int i=1;i<=len;i++)
{
cout<<b[i];
}
cout<<endl;
}
return 0;
}
4、总结
我这只蒟蒻好菜啊,就把签到的3题全过掉了,后面3题难的一题没过掉...
而且B题还脑抽地交了4遍才过,真是不开ULL见祖宗
最后rank7000+,好菜啊...
不过因为以前更菜,rat都不到1300了,出 乎 意 料 地+24rat....
mengbier
下次加油吧!争取上1300
by pjx
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析