天之神团队12月邀请赛 题解
2025-01-05 10:43:26
发布于:广东
天之神团队12月邀请赛 题解
T1 比赛
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[25]={0},b[25]={0},i=1;
char c;
while(cin>>c){
int x=c-'0';
a[x]++;
if(a[x]==x){
b[x]=i;
}
i++;
}
int cnt=0;
for(int i=1;i<=n;i++){
cnt+=(b[i]!=0);
}
cout<<cnt<<'\n';
for(int i=1;i<=n;i++){
if(b[i]==0){
cout<<i<<" -1\n";
continue;
}
cout<<i<<' '<<b[i]<<'\n';
}
return 0;
}
T2 整除
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
string s;cin>>s;
int l=0,r=0,sz=s.size();
for(int i=0;i<sz-3;i++){
int aa=s[i]-'0';
l*=10;l+=aa;
}
for(int i=sz-3;i<sz;i++){
int bb=s[i]-'0';
r*=10;r+=bb;
}
int cc=abs(l-r);
if(cc%13)cout<<"NO\n";
else cout<<"YES\n";
return ;
}
signed main(){
int T;cin>>T;
while(T--){
long long a;cin>>a;
if(a%13)cout<<"NO\n";
else cout<<"YES\n";
}
return 0;
}
T3 方程
#include<bits/stdc++.h>
using namespace std;
void solve(){
int a,b;cin>>a>>b;
string c;cin>>c;
int sz=c.size(),p=sz-1;
for(int i=0;i<sz;i++){
if(c[i]=='/')p=i;
}
string lf=c.substr(0,p+1),rg=c.substr(p****z-p-1);
if(lf[lf.size()-1]=='/'){lf=lf.substr(0,p);}
int l=0,r=0,ls=lf.size(),rs=rg.size();
if(rg=="")r=1;
for(int i=0;i<ls;i++){
int aa=lf[i]-'0';
l*=10;l+=aa;
}
if(r!=1)for(int i=0;i<rs;i++){
int bb=rg[i]-'0';
r*=10;r+=bb;
}
double A=a,B=b;
if(B/l*r==A&&__gcd(l,r)==1){
cout<<"YES\n";
return ;
}
else cout<<"NO ";
int L,R,g=__gcd(a,b);
L=b/g,R=a/g;
cout<<L;
if(R!=1)cout<<'/'<<R;
cout<<'\n';
return ;
}
int main(){
int T;
cin>>T;
while(T--)solve();
return 0;
}
T4 人
#include <bits/stdc++.h>
#define int long long
using namespace std;
long long n,sum=0,mod=1145141919;
int qsm(long long m,long long k,long long p){
long long res=1,t=m;
while(k){
if(k&1) res=res*t%p;
t=t*t%p;
k>>=1;
}
return res;
}
signed main(){
cin >> n;
for(int i=1;i<=n;i++){
sum+=qsm(i,i,mod);
}
cout << sum;
return 0;
}
T5 地
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1000005],ans;
int check(int ti){
int now=-1;
for(int i=1;i<=m;i++){
if(a[i]<=now) now=max(a[i]+ti,now);
else{
if(a[i]-ti>now+1) return 0;
now=a[i]+max(ti-2*(a[i]-now-1),(ti-(a[i]-now-1))/2);
}
}
return now>=n;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>a[i];
sort(a+1,a+m+1);
if(m==1){
cout<<n+min(a[1],n-a[1]);
return 0;
}
int l=1,r=n;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)){
ans=mid;
r=mid-1;
}else l=mid+1;
}
cout<<ans;
return 0;
}
T6 天
n=int(input())
s=input()
for i in range(1, n + 1):
u=True
ss=set()
for j in range(len(s) - i + 1):
sss = s[j:j+i]
if sss in ss:
u=False
break
ss.add(sss)
if u:
print(i)
break
T7,T8 在这里就先不写了,点个赞吧!��
全部评论 1
顶
2025-01-05 来自 广东
0
有帮助,赞一个