欢乐赛#43全题解
2025-03-16 22:02:29
发布于:北京
个人认为难度:红/红/红/红/橙/红
T1,买花
思路:
if判断:如果金额不超过100元,原价买。如果金额在101元到200元,便宜10元。如果金额在201元到300元,便宜20元。如果金额在301元到500元,便宜50元。
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n<=100)cout<<n;
if(n>100&&n<=200)cout<<n-10;//根据题目条件判断
if(n>200&&n<=300)cout<<n-20;
if(n>300&&n<=500)cout<<n-50;
return 0;
}
T2,有趣的任务
思路:
读入数组,然后将数组的第b和第c项互换(好水)
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,b,c;
cin>>n>>b>>c;
vector<int> a(n+1);
for(int i=1;i<=n;i++){//读入数组
cin>>a[i];
}
swap(a[b],a[c]);//将b和c项互换
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
T3 ,摘苹果
思路:
可以先求整个二维数组的和,接着减去坐标1,1;1,n;n,1;n,n。就可以了
代码:
#include<bits/stdc++.h>
using namespace std;
int a[1005][1005];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
long long sum=0;//不开long long见祖宗
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
sum+=a[i][j];
}
}
sum-=a[1][1];//把四个角减去
sum-=a[1][n];
sum-=a[n][1];
sum-=a[n][n];
cout<<sum;
return 0;
}
T4,数位和为k的个数
思路:
用一个for循环遍历l到r中的数位和,如果和等于k,ans就+1
求数位和代码:
while(x!=0){
sum+=x%10;
x/=10;
}
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int l,r,c;
cin>>l>>r>>c;
int ans=0,sum=0;
for(int i=l;i<=r;i++){
sum=0;
int x=i;
while(x!=0){//统计数位和
sum+=x%10;
x/=10;
}
if(sum==c){//若数位和等于c,ans就++
ans++;
}
}
cout<<ans<<endl;
return 0;
}
T5,KMP算法
思路:
(唯一一个有点难度的题,硬控我2.5分钟)
先找出M的位置,然后将M前面的K乘以M后面的P就行了
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
int n=s.length();
int id;
for(int i=0;i<n;i++){
if(s[i]=='M'){//找到m的位置
id=i;
}
}
int ans1=0;
for(int i=0;i<id;i++){//统计M前面的K
if(s[i]=='K'){
ans1++;
}
}
int ans2=0;
for(int i=id;i<n;i++){//统计M后面的P
if(s[i]=='P'){
ans2++;
}
}
cout<<ans1*ans2;
return 0;
}
T6,最大的质数
思路:
设一个从n到3的for循环,如果i是质数,那么就输出i
代码:
#include<bits/stdc++.h>
using namespace std;
bool prime(int x){
for(int i=2;i<=sqrt(x);i++){
if(x%i==0){
return false;
}
}
return true;
}
int main(){
int q;
cin>>q;
while(q--){
int n;
cin>>n;
for(int i=n-1/*这里是n-1,因为题目说要小于n*/;i>=2;i--){
if(prime(i)){
cout<<i<<endl;
break;
}
}
}
return 0;
}
全部评论 1
给个周边吧
2025-03-17 来自 北京
0
有帮助,赞一个