注意本题解并没有去追求最优解,只是用比较暴力的方法求解。D题听说要改说明不是位数30位,目前除了D题可能有问题之外其他代码已经全部正确。
A.查找字串
用string BF(暴力求解即可)
代码
#include <bits/stdc++.h>
using namespace std;
main()
{
string a,b;
cin>>a>>b;
for(int i=0;i<a.size();i++)
{
int f=1;
if(a[i]==b[0])
{
for(int j=0;j<b.size();j++)
if(a[i+j]!=b[j])
{
f=0;
break;
}
if(f)
return cout<<"Y",0;
}
}
cout<<"N";
}
B.A+B Problem
a+b不多解释,注意用long long
代码
#include <bits/stdc++.h>
using namespace std;
main()
{
long long a,b;
cin>>a>>b;
cout<<a+b;
}
C.斜率
非常简单的数学题,注意斜率不存在即为Δx为0
代码
#include <bits/stdc++.h>
using namespace std;
main()
{
double ax,ay,bx,by;
cin>>ax>>ay>>bx>>by;
if(bx-ax==0)
return cout<<"NO",0;
double k=(by-ay)/(bx-ax);
printf("%.2lf",k);
}
D.小明的成绩
直接在输入的时候找出最大值之后求差判断即可
代码
#include <bits/stdc++.h>
using namespace std;
main()
{
int a1,b1,c1;
cin>>a1>>b1>>c1;
int ans1,ans2,ans3;
int n;
cin>>n;
while(n--)
{
int n1,n2,n3;
cin>>n1>>n2>>n3;
ans1=max(ans1,n1);
ans2=max(ans2,n2);
ans3=max(ans3,n3);
}
(ans1-a1>0)?cout<<ans1-a1:cout<<0;
cout<<" ";
(ans2-b1>0)?cout<<ans2-b1:cout<<0;
cout<<" ";
(ans3-c1>0)?cout<<ans3-c1:cout<<0;
}
E.D\Q数球
标准的队列模拟题,直接用队列模拟即可,把经过的球放到队尾,数到的球踢出队列即可
代码
#include <bits/stdc++.h>
using namespace std;
main()
{
int n;
while(cin>>n)
{
queue<int> q;
for(int i=1;i<=n;i++)
q.push(i);
while(1)
{
if(q.size()==1)
{
cout<<q.front()<<endl;
break;
}
for(int i=0;i<2;i++)
{
int t=q.front();
q.pop();
q.push(t);
}
q.pop();
}
}
}
F.环形求和
最大子序列和的翻版问题设置两个变量sum和id,sum用来记录最大值,id用来记录下标。然后循环里面的t用来记录一次要加多少的数
代码
#include <bits/stdc++.h>
using namespace std;
int num[105];
main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>num[i];
for(int i=n+1;i<n+4;i++)
num[i]=num[i-n];
int ans=0;int id=1;
for(int i=1;i<=n;i++)
{
int sum=0;
for(int j=i;j<=i+3;j++)
sum+=num[j];
if(sum>ans)
{
ans=sum;
id=i;
}
}
cout<<ans<<endl<<id;
}
G.数字换位
直接转换成字符串倒叙输出即可
代码
#include <bits/stdc++.h>
using namespace std;
main()
{
string a;
cin>>a;
reverse(a.begin(),a.end());
cout<<a;
}
H.数字统计
还是直接转换成字符串硬解统计即可
代码
#include <bits/stdc++.h>
using namespace std;
main()
{
int L,R;
cin>>L>>R;
int sum=0;
for(int i=L;i<=R;i++)
{
stringstream s;
s<<i;
string ss;
s>>ss;
for(int i=0;i<ss.size();i++)
if(ss[i]=='2')
sum++;
}
cout<<sum;
}