分类一定有条理:
#include<bits/stdc++.h>
using namespace std;
char ss[106];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int cnt1=0,cnt2=0,cnt3=0;
scanf(" %s",ss);
int len=strlen(ss);
for(int i=0;i<len;i++)
{
if(ss[i]>='0'&&ss[i]<='9') cnt1++;
else if(ss[i]>='a'&&ss[i]<='z') cnt2++;
else if(ss[i]>='A'&&ss[i]<='Z') cnt3++;
}
if(cnt1&&cnt2&&cnt3) printf("%s\n",ss);
else if(cnt1==0&&cnt2==0)//只有大写写字母
{
ss[0]='1';
ss[1]='a';
printf("%s\n",ss);
}
else if(cnt2==0&&cnt3==0)//只有数字
{
ss[0]='A';
ss[1]='a';
printf("%s\n",ss);
}
else if(cnt1==0&&cnt3==0)//只有小写数字
{
ss[0]='1';
ss[1]='A';
printf("%s\n",ss);
}
else if(cnt1==0)//没有数字
{
if(cnt2>1&&cnt3>1)
{
ss[0]='1';
}
else if(cnt2==1)
{
for(int i=0;i<len;i++)
{
if(ss[i]>='A'&&ss[i]<='Z')
{
ss[i]='1';
break;
}
}
}
else
{
for(int i=0;i<len;i++)
{
if(ss[i]>='a'&&ss[i]<='z')
{
ss[i]='1';
break;
}
}
}
printf("%s\n",ss);
}
else if(cnt2==0)//没有大写字母
{
if(cnt1>1&&cnt3>1)
{
ss[0]='a';
}else if(cnt1==1)
{
for(int i=0;i<len;i++)
{
if(ss[i]>='A'&&ss[i]<='Z')
{
ss[i]='a';
break;
}
}
}
else
{
for(int i=0;i<len;i++)
{
if(ss[i]>='0'&&ss[i]<='9')
{
ss[i]='a';
break;
}
}
}
printf("%s\n",ss);
}
else if(cnt3==0)//没有小写字母
{
if(cnt1>1&&cnt2>1)
{
ss[0]='A';
}
else if(cnt2==1)
{
for(int i=0;i<len;i++)
{
if(ss[i]>='0'&&ss[i]<='9')
{
ss[i]='A';
break;
}
}
}
else
{
for(int i=0;i<len;i++)
{
if(ss[i]>='a'&&ss[i]<='z')
{
ss[i]='A';
break;
}
}
}
printf("%s\n",ss);
}
}
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
long long l,r;
int main()
{
scanf("%I64d %I64d ",&l,&r);
printf("YES\n");
for(long long j=1,i=l;j<=(r-l+1)/2,i<r;j++,i=i+2)
{
printf("%I64d %I64d \n",i,i+1);
}
return 0;
}
这是第一次错误代码,没有考虑对应顺序问题:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[106];
int cnt[106];
int main()
{
int n;
int flag=0;
int num=0;
string ss="";
scanf("%d",&n);
memset(cnt,0,sizeof(cnt));
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
cnt[a[i]]++;
}
for(int i=0;i<n;i++)
{
if(cnt[a[i]]==1)
num++;
}
if(num%2==0)
{
ss="";
printf("YES\n");
for(int i=0;i<num/2;i++)
ss=ss+"A";
for(int i=0;i<n-num/2;i++)
ss=ss+"B";
cout<<ss<<endl;
}
else
{
ss="";
for(int i=0;i<n;i++)
{
if(cnt[a[i]]>=3)
{
flag=1;
break;
}
}
if(flag==0) printf("NO\n");
else
{
printf("YES\n");
for(int i=0;i<num/2;i++)
ss=ss+"A";
ss=ss+"A";
for(int i=0;i<n-num/2-1;i++)
ss=ss+"B";
cout<<ss<<endl;
}
}
return 0;
}
AC代码:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[106];
int cnt[106];
int main()
{
int n;
int flag=0;
int num=0;
string ss="";
scanf("%d",&n);
memset(cnt,0,sizeof(cnt));
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
cnt[a[i]]++;
}
for(int i=0;i<n;i++)
{
if(cnt[a[i]]==1)
num++;
}
if(num%2==0)
{
int res=0;
for(int i=0;i<n;i++)
{
if(cnt[a[i]]==1&&res<num/2)
{
ss+='A';
res++;
}
else ss+='B';
}
puts("YES");
cout<<ss<<endl;
}
else
{
ss="";
for(int i=0;i<n;i++)
{
if(cnt[a[i]]>=3)
{
flag=1;
break;
}
}
if(flag==0) printf("NO\n");
else
{
printf("YES\n");
int res=0;
int cnum=0;
for(int j=0;j<n;j++)
{
if(cnt[a[j]]==1&&res<num/2) ss=ss+"A",res++;
else if(cnum==0&&cnt[a[j]]>=3) ss=ss+"A",cnum=1;
else ss=ss+"B";
}
cout<<ss<<endl;
}
}
return 0;
}
本文详细解析了三道算法题:Vasya的密码,寻找相对质数对,以及Vasya和多集问题。通过C++代码展示了如何判断密码强度,生成相对质数对,以及解决多集问题的正确方法。文章覆盖了字符串操作、数学原理及数据结构的应用。
1301

被折叠的 条评论
为什么被折叠?



