目前看不到题目,所以只有代码,大伙看代码就行了,不懂的留言下
A题
#include <bits/stdc++.h>
using namespace std;
const int N=500;
char s[N];
int main()
{
int n;
scanf("%d",&n);
int cnt=0;
bool f=false;
vector<string>v;
while(true)
{
scanf("%s",s);
string k;
for(int i=0;i<strlen(s);i++)
{
if(s[i]!='#')
{
k+=s[i];
}
else
{
f=true;
break;
}
}
v.push_back(k);
if(f)break;
}
for(auto k:v)
{
if(k.size()<12)continue;
for(int i=0;i<k.size()-12+1;i++)
{
if(k.substr(i,12)=="(zhangsheng)")cnt++;
}
}
if(cnt>=n)printf("%d True\n",cnt);
else printf("%d False\n",cnt);
return 0;
}
B题
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int a,b;
scanf("%lld%lld",&a,&b);
int mx=-1;
int m=0;
int n=0;
for(int i=a;i<=b;i++)
{
for(int j=a;j<=b;j++)
{
if((i*i-i*j-j*j)*(i*i-i*j-j*j)==1&&i*i+j*j>mx)
{
mx=i*i+j*j;
m=i;
n=j;
}
}
}
printf("max( %lld^2 + %lld^2 ) = %lld\n",n,m,m*m+n*n);
return 0;
}
C题
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+100;
int main()
{
int n;
scanf("%d",&n);
map<int,int>ma;
for(int i=1;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
ma[x]=y;
}
int cnt=0;
for(auto &x:ma)
{
if(x.second==1)cnt++;
}
if(cnt==1)
{
int ans=0;
for(auto &x:ma)
{
if(x.second==1)
{
ans=x.first;
break;
}
}
printf("%04d\n",ans);
printf("Da Ben Zhong is found!\n");
}
else
{
vector<int>v;
for(auto &x:ma)
{
if(x.second==1)
{
v.push_back(x.first);
}
}
for(int i=0;i<v.size();i++)printf("%04d%c",v[i]," \n"[i==(int)v.size()-1]);
printf("There are %d suspects.\n",v.size());
}
return 0;
}
D题
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
string x=to_string(a);
string y=to_string(b);
map<char,int>ma2;
for(int i=0;y[i];i++)
{
ma2[y[i]]++;
}
map<int,int>vis1;
map<int,int>vis2;
for(int i=0;i<x.size();i++)
{
if(ma2[x[i]])
{
vis1[i]=1;
for(int j=0;j<y.size();j++)
{
if(vis2[j]==0&&y[j]==x[i])
{
vis2[j]=1;
ma2[x[i]]--;
break;
}
}
}
}
int ans1=0;
int ans2=0;
for(int i=0;i<x.size();i++)
{
if(vis1[i]==0)
{
ans1=ans1*10+(x[i]-'0');
}
}
for(int i=0;i<y.size();i++)
{
if(vis2[i]==0)
{
ans2=ans2*10+(y[i]-'0');
}
}
int gc=__gcd(a,b);
int xx=a/gc;
int yy=b/gc;
if(ans2*xx==yy*ans1&&ans1!=0&&ans2!=0)
{
printf("%d/%d = %d/%d\n",a,b,ans1,ans2);
}
else
{
printf("%d/%d != %d/%d\n",a,b,ans1,ans2);
}
return 0;
}
E 题
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+100;
int main()
{
deque<int>q,q2;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
q.push_front(i);
}
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
q2.push_front(x);
}
int ti=0;
map<int,int>ma;
while(!q.empty())
{
int p=q2.back();
int id=q.back();
if(p==id)
{
ma[p]=ti+1;
ti++;
q2.pop_back();
q.pop_back();
}
else
{
q2.pop_back();
q2.push_front(p);
ti++;
}
}
int sum=0;
for(auto &x:ma)
{
sum+=x.second;
}
printf("%d %.1f\n",ti,sum*1.0/n*1.0);
return 0;
}