第十届题目

组队

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;
}
相关推荐
AI小老六2 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
胡萝卜术3 小时前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize3 小时前
初识DFS 与 BFS:递归、队列与图遍历
算法
罗西的思考17 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
美团技术团队20 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC2 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC2 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK2 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
_清歌2 天前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法