第十届题目

组队

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  printf("490");
  return 0;
}

年号字串

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  printf("BYQ");
  return 0;
}

数列求值

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  printf("4659");
  return 0;
}

数的分解

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

int check(int x)
{
  while(x)
  {
    if(x%10==2||x%10==4) return 0;
    x/=10;
  }
  return 1;
}

int main(int argc, char *argv[])
{
  int cnt=0;
  for(int x=1;x<=2019/3;x++)
  {
    if(check(x))
    {
      for(int y=x+1;y<=(2019-x)/2;y++)
      {
        if(check(y))
        {
          int z=2019-x-y;
          if(z>y&&check(z)) cnt++;
        }
      }
    }
  }
  printf("%d",cnt);
  return 0;
}

特别数的和

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  long long sum=0;
  int n;
  scanf("%d",&n);
  for(int i=1;i<=n;i++)
  {
    int t=i;
    int flag=0;
    while(t)
    {
      if(t%10==2||t%10==0||t%10==1||t%10==9)
      {
        flag=1;
        break;
      }
      t/=10;
    }
    if(flag) sum+=(long long)i;
  }
  printf("%lld",sum);
  return 0;
}

完全二叉树的权值

cs 复制代码
#include <stdio.h>
#include <math.h>
#include <limits.h>

#define MAX 100005

int main(int argc, char *argv[])
{
  int n;
  scanf("%d",&n);
  int a[100005];
  for(int i=1;i<=n;i++)
  {
    scanf("%d",&a[i]);
  }
  int depth=1;
  int ans_depth=1;
  int start=1,end=1;
  int max=-100000;
  while(end<n)
  {
    int sum=0;
    end=pow(2,depth)-1;
    if(end>n) end=n;
    for(int i=start;i<=end;i++)
    {
      sum+=a[i];
    }
    if(sum>max) 
    {
      max=sum;
      ans_depth=depth;
    }
    start=end+1;
    depth++;
  }
  printf("%d",ans_depth);
  return 0;
}

等差数列

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

#define MAX 100005

int cmp(const void *a,const void *b)
{
  long long pa=*(long long*)a;
  long long pb=*(long long*)b;
  return (pa>pb)-(pa<pb);
}

long long gcd(long long a,long long b)
{
  while(b)
  {
    long long t=b;
    b=a%b;
    a=t;
  }
  return a;
}

int main(int argc, char *argv[])
{
  int n;
  scanf("%d",&n);
  long long a[100005];
  for(int i=0;i<n;i++)
  {
    scanf("%lld",&a[i]);
  }
  qsort(a,n,sizeof(long long),cmp);
  if(a[0]==a[n-1]) 
  {
    printf("%d",n);
    return 0;
  }
  if(n==1)
  {
    printf("1");
    return 0;
  }
  long long d=a[1]-a[0];
  for(int i=2;i<n;i++)
  {
    d=gcd(d,a[i]-a[i-1]);
  }
  long long x=(a[n-1]-a[0])/d+1;
  printf("%lld",x);
  return 0;
}

后缀表达式

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

int cmp(const void *a, const void *b) {
    long long pa = *(long long*)a;
    long long pb = *(long long*)b;
    return (pa > pb) - (pa < pb);
}

int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    long long a[200005];
    int total = n + m + 1;
    
    for (int i = 0; i < total; i++) {
        scanf("%lld", &a[i]);
    }
    
    qsort(a, total, sizeof(long long), cmp);
    
    long long sum = 0;
    for (int i = 0; i < total; i++) {
        sum += a[i];
    }
    
    if (m == 0) {
        printf("%lld", sum);
        return 0;
    }
    
    if (a[0] >= 0) {
        // 全正数
        printf("%lld", sum - 2 * a[0]);
    } 
    else if (a[total - 1] <= 0) {
        // 全负数
        printf("%lld", -sum + 2 * a[total - 1]);
    } 
    else {
        // 有正有负
        long long abs_sum = 0;
        for (int i = 0; i < total; i++) {
            abs_sum += llabs(a[i]);
        }
        printf("%lld", abs_sum);
    }
    
    return 0;
}
相关推荐
不会代码的小猴4 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
AI备案指南-满满5 小时前
大模型与算法备案全流程详解:从零到通过的完整指南
人工智能·算法·备案·大模型备案·算法备案
江畔柳前堤5 小时前
LLM 训练核心机制深度解析:Warmup、Cosine Decay 与 Perplexity 的完整知识体系
网络·人工智能·深度学习·算法·机器学习·语音识别
一只旭宝5 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
良木林6 小时前
子串 - LeetCode hot 100
算法·leetcode·职场和发展
陌诺曦.6 小时前
Python扩展小练习
算法
coder!mq7 小时前
说几个常见的语法糖?
java·开发语言·算法
不爱学英文的码字机器8 小时前
推荐算法梳理,六种主流模型与九步训练流程
算法·机器学习·推荐算法
白狐_7989 小时前
408数据结构第5章:树与二叉树②——遍历、线索树、森林与哈夫曼
数据结构·算法·深度优先