欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【week6-入门组-周签✔】2月8日 ~ 2月14日

程序员文章站 2022-07-13 07:57:34
...

02.08

AcWing 417. 不高兴的津津

讲解:

模拟

#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

AcWing 425. 明明的随机数

讲解:

模拟

#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

AcWing 458. 比例简化

讲解:

枚举

因为分子分母从小到大枚举,所以最先出来的是最简的,不需要管互质

#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

AcWing 441. 数字统计

讲解:

枚举

#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

AcWing 449. 质因数分解

讲解:

枚举

#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

AcWing 445. 数字反转

讲解:

模拟

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;
}