第十四届蓝桥杯三月真题刷题训练——第 4 天(3.7)

学习算法的小菜鸡 每日一题总教官 2023-03-07 15:18:39

9数算式

#include <bits/stdc++.h>

using namespace std;

int st[10];
vector<int>res;
int ans=0;

bool check(string ch) {
  if(ch.size()!=9) return false;
  vector<int>s(10,0);
  for(int i=0;i<ch.size();i++) {
    s[ch[i]-'0']++;
  }
  for(int i=1;i<=9;i++) {
    if(!s[i]) return false;
  }
  return true;
}

void dfs(int v) {
  if(v==10) {
    int num=0;
    for(auto v:res) num=num*10+v;
    int flag=100000000,a=0;
    for(int i=0;i<res.size();i++) {
      num%=flag;
      flag/=10;
      a=a*10+res[i];
      if(check(to_string(num*a))) ans++;
    } 
    return;
  }
  for(int i=1;i<=9;i++) {
    if(!st[i]) {
      st[i]=1;
      res.push_back(i);
      dfs(v+1);
      res.pop_back();
      st[i]=0;
    }
  }
}

int main()
{
  dfs(1);
  cout<<ans/2<<endl;
  return 0;
}

#include<bits/stdc++.h>
#define int long long

using namespace std;

string rev(string ch) {
  reverse(ch.begin(),ch.end());
  return ch;
}

int change1(int v) {
  string ch=to_string(v);
  ch+=rev(ch);
  return stol(ch);
}

int change2(int v) {
  string ch=to_string(v/10);
  ch+=rev(to_string(v));
  return stol(ch);
}

bool check(int v) {
  string ch=to_string(v);
  for(int i=1;i<ch.size();i++) {
    if(ch[i]<ch[i-1]) return false;
  }
  return true;
}

signed main() {
  int ans=0;
  for(int i=1;i<=500000;i++) {
    if(!check(i)) continue;
    int res1=change1(i);
    if(res1>=2022&&res1<=2022222022) ans++;
    int res2=change2(i);
    if(res2>=2022&&res2<=2022222022) ans++;
  }
  cout<<ans<<endl;
}

最少刷题数

#include <iostream>
#include <algorithm>

using namespace std;

const int N=1e5+10;
int q[N];
int vv[N];
int n;

bool check(int v,int st) {
  int a=(upper_bound(vv+1,vv+1+n,q[st]+v)-vv-1)-(lower_bound(vv+1,vv+1+n,q[st]+v)-vv-1);
  int cnt1=lower_bound(vv+1,vv+1+n,q[st]+v)-vv-1;
  int cnt2=n-cnt1-a;
  if(v) cnt1--;
  return cnt1>=cnt2;
}

int main()
{
  cin>>n;
  for(int i=1;i<=n;i++) {
    cin>>q[i];
    vv[i]=q[i];
  }
  sort(vv+1,vv+1+n);
  for(int i=1;i<=n;i++) {
    int l=0,r=100010;
    while(l<r) {
      int mid=l+r>>1;
      if(check(mid,i)) r=mid;
      else l=mid+1;
    }
    cout<<r<<' ';
  }
}

完全平方数

#include <bits/stdc++.h>
#define int long long

using namespace std;

int n,m,ans=1;

void fj(int v) {
  int flag=sqrt(v);
  for(int i=2;i<=flag;i++) {
    if(v%i==0) {
      int cnt=0;
      while(v%i==0) {
        v/=i;
        cnt++;
      }
      if(cnt&1) ans*=i;
    }
  }
  if(v!=1) ans*=v; 
}

signed main()
{
  cin>>n>>m;
  fj(n);
  cout<<ans<<endl;
  return 0;
}
...全文
59 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
华年的小年华 2023-03-07
  • 打赏
  • 举报
回复

第一题ans输出时为什么要除2呢

学习算法的小菜鸡 每日一题总教官 2023-03-07
  • 举报
回复 1
@华年的小年华 题目中说交换顺序算一个

50,970

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧