本场c++与c的核心代码基本一致,仅输入输出不同,但后续c++更为方便;
可以学习一下c++,利于以后学习,当然c的输入输出在c++里也完全可以使用;
代码仅供参考;
有不懂的地方可以问学长();
A.简单的签到题
bits/stdc++.h为万能头文件,几乎包含所有头文件;
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"美人不我期,Cia木日零llo~(∠·ω< )⌒★。";
return 0;
}
B.简单的打印
循环暴力即可,endl为换行;
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cout<<"Hello World"<<endl;
}
return 0;
}
C.数组
逆向循环即可;
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[n+1];
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=n;i>=1;i--) cout<<a[i]<<" ";
return 0;
}
D.数学
1到n每个数都判断一遍是否为3的倍数即可;
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,ans;
cin>>n;
for(int i=1;i<=n;i++){
if(i%3==0) ans++;
}
cout<<ans;
return 0;
}
E.小曾学长的数学
sqrt(x)是x的开根号函数;
按题目给的公式计算即可;
fixed配合setprecision(x)可输出x位小数;
#include<bits/stdc++.h>
using namespace std;
int main(){
double x1,x2,x3,y1,y2,y3,ans;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
double a1=fabs(x1-x2),a2=fabs(y1-y2),b1=fabs(x1-x3),b2=fabs(y1-y3),c1=fabs(x2-x3),c3=fabs(y2-y3);
double a=sqrt(a1*a1+a2*a2),b=sqrt(b1*b1+b2*b2),c=sqrt(c1*c1+c3*c3),p;
p=(a+b+c)/2;
ans=sqrt(p*(p-a)*(p-b)*(p-c));
cout<<fixed<<setprecision(3)<<ans;
return 0;
}
F.排序
介绍一下时间复杂度,本题中n<=1000,一个从1到n的循环最多1000次;
一般当计算次数大于10的9次方时会超时;
所以我们可以使用n*n的时间复杂度方法即O(N*N);
这里介绍一个简单排序算法:冒泡排序;
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n<=0) cout<<"-1";
else{
long long a[n+1];
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
for(int j=i;j>=2;j--){
if(a[j]<a[j-1]) swap(a[j],a[j-1]);//swap为交换函数
else break;//将当前的数向前移直到前面的数都比它小
}
}
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}
return 0;
}
G.找不同
遍历数组,不断更新最大值;
再次遍历,如果当前值不等于最大值并且是第一次出现则答案+1;
#include<bits/stdc++.h>
using namespace std;
int a[1005],b[1005];
int main(){
int n,maxn=0,ans=0;;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) maxn=max(a[i],maxn);//max(a,b)的值为a,b中最大值;
for(int i=1;i<=n;i++){
if(a[i]<maxn){
if(b[a[i]]==0){
ans++;
b[a[i]]++;
}
}
}
cout<<ans;
return 0;
}
H.数字分解
当一个数字可以被分解为2^x*3^y时,说明该数的质因子只包含2和3;
当该数字将自身包含的2和3除完后不是1则它还有其他质因子;
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n;
cin>>n;
while(n%2==0) n/=2;
while(n%3==0) n/=3;
if(n==1) cout<<"Yes";
else cout<<"No";
return 0;
}

Comments NOTHING