题目入口
A - Star

#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
#define eps 1e-8
using namespace std;
const int mod=1e9+7;
const int M=2e3+5;
const int N=1e6+5;
signed main()
{
int x,y;
cin>>x;
if(x%100==0) cout<<100;
else
{
y=x;
x/=100;
x++;
cout<<x*100-y;
}
return 0;
}
B - uNrEaDaBlE sTrInG

#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
#define eps 1e-8
using namespace std;
const int mod=1e9+7;
const int M=2e3+5;
const int N=1e3+5;
char s[N];
int flag;
signed main()
{
scanf("%s",s+1);
int sz=strlen(s+1);
for(int i=1;i<=sz;i+=2) if(s[i]<'a'||s[i]>'z') flag=1;
for(int i=2;i<=sz;i+=2) if(s[i]<'A'||s[i]>'Z') flag=1;
if(flag) puts("No");
else puts("Yes");
return 0;
}
C - Kaprekar Number

#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
#define int long long
#define eps 1e-8
using namespace std;
const int mod=1e9+7;
const int M=2e3+5;
const int N=1e3+5;
int n,m;
int a[N],b[N];
int cnt,sum,t,ans;
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
t=0;
sum=n;
while(sum)
{
a[++t]=sum%10;
sum/=10;
}
sort(a+1,a+t+1);
ans=0;
cnt=0;
for(int j=1;j<=t;j++) cnt=a[j]+cnt*10;
for(int j=t;j>=1;j--) ans=a[j]+ans*10;
n=ans-cnt;
}
cout<<n;
return 0;
}
D - Base n(特判+二分,坑点较多)

#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
#define int __int128
#define eps 1e-8
using namespace std;
const int mod=1e9+7;
const int M=2e3+5;
const int N=1e3+5;
char s[N];
__int128 base,n,sum,a[N],ans;
int sz;
__int128 read()
{
int x=0,flag=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') flag=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<3)+(x<<1)+ch-'0';
ch=getchar();
}
return x*flag;
}
void write(__int128 cnt)
{
if(cnt>9) write(cnt/10);
putchar(cnt%10+'0');
}
bool check(__int128 i)
{
sum=0;
for(int j=1;j<=sz;j++)
{
sum=sum*i+a[j];
if(sum>n) return 0;
}
return 1;
}
signed main()
{
int flag=0;
scanf("%s",s+1);
n=read();
sz=strlen(s+1);
for(int i=1;i<=sz;i++) a[i]=__int128(s[i]-'0');
for(int i=1;i<=sz;i++) base=max(base,a[i]);
base++;
if(!check(base))
{
puts("0");
return 0;
}
if((sum==n)||(sum<n&&sz==1))
{
puts("1");
return 0;
}
__int128 l=base,r=n,mid;
while(l<=r)
{
mid=(l+r)>>1;
if(check(mid)) ans=mid,l=mid+1;
else r=mid-1;
}
write(ans-base+1);
return 0;
}
E - Train(最短路)

#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
#define int long long
#define eps 1e-8
using namespace std;
const int mod=1e9+7;
const int M=2e3+5;
const int N=2*1e5+5;
int n,m,s,t;
int d[N],v[N];
struct node
{
int ver,next,wait,time;
}e[N];
int tot,head[N];
priority_queue < pair < int , int > > q;
void add(int x,int y,int z,int w)
{
e[++tot].ver=y;
e[tot].wait=w;
e[tot].time=z;
e[tot].next=head[x];
head[x]=tot;
}
void dijkstra()
{
for(int i=1;i<=n;i++) d[i]=1e18;
d[s]=0;
q.push(make_pair(0,s));
while(q.size())
{
int x=q.top().second;
q.pop();
if(v[x]) continue;
v[x]=1;
for(int i=head[x];i;i=e[i].next)
{
int y=e[i].ver;
int z=e[i].time;
int w=e[i].wait;
if(d[y]>d[x]+z+(w-(d[x]%w))%w)
{
d[y]=d[x]+z+(w-(d[x]%w))%w;
q.push(make_pair(-d[y],y));
}
}
}
}
signed main()
{
cin>>n>>m>>s>>t;
for(int i=1;i<=m;i++)
{
int x,y,z,w;
scanf("%lld%lld%lld%lld",&x,&y,&z,&w);
add(x,y,z,w);
add(y,x,z,w);
}
dijkstra();
if(d[t]==1e18) puts("-1");
else cout<<d[t];
return 0;
}