【week6-入门组-周签✔】2月8日 ~ 2月14日
程序员文章站
2022-07-13 07:57:34
...
02.08
讲解:
模拟
#include<iostream>
using namespace std;
int main(){
int max_time=0,day;
for(int i=1;i<=7;i++){
int a,b;
cin>>a>>b;
if(a+b>max_time){//当相同时,默认前面的
max_time=a+b;
day=i;
}
}
if(max_time<=8) cout<<0<<endl;
else cout<<day<<endl;
return 0;
}
02.09
讲解:
模拟
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=110;
int n;
int a[maxn];
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
int k=1;//题目格式要求,下面循环也因此
for(int i=1;i<n;i++){
if(a[i]!=a[i-1])
a[k++]=a[i];
}
cout<<k<<endl;
for(int i=0;i<k;i++){
cout<<a[i]<<' ';
}
return 0;
}
02.10 无题
02.11
讲解:
枚举
因为分子分母从小到大枚举,所以最先出来的是最简的,不需要管互质
#include<iostream>
using namespace std;
int main(){
int A,B,L;
int a,b;
double delta=1e9;//差值
cin>>A>>B>>L;
for(int i=0;i<=L;i++){//分子
for(int j=1;j<=L;j++){//分母
double x=(double)i/j;
double X=(double)A/B;
if(x>=X&&x-X<delta){
delta=x-X;
a=i;
b=j;
}
}
}
cout<<a<<' '<<b<<endl;
return 0;
}
02.12
讲解:
枚举
#include<iostream>
using namespace std;
int main(){
int l,r;
cin>>l>>r;
int res=0;
for(int i=l;i<=r;i++){
for(int j=i;j;j/=10){
if(j%10==2){
res++;
}
}
}
cout<<res<<endl;
return 0;
}
02.13
讲解:
枚举
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=2;;i++){//事实上枚举到 根号n 就找到了
if(n%i==0){
cout<<n/i<<endl;//输出较大的那个
break;
}
}
return 0;
}
02.14
讲解:
模拟
reverse()
在头文件 algorithm
里面
reverse(beg,end)
reverse()会将区间[beg,end)内的元素全部逆序;
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
string str;
cin>>str;
reverse(str.begin(),str.end());//元素全部逆序
if(str.back()=='-'){
cout<<'-';
str.pop_back();
}
int k=0;
while(str[k]=='0'&&k+1<str.size()) k++;//当前位是0,并且下一位没有越界
//此处预留一位,是考虑了输入为0的情况,特判
while(k<str.size()) cout<<str[k++];
return 0;
}
上一篇: GEE下载Landsat数据
下一篇: 语法分析之算符优先算法