第十五届题目

握手问题

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

int main(int argc, char *argv[])
{
  int sum=0;
  for(int i=49;i>=7;i--)
  {
    sum+=i;
  }
  printf("%d",sum);
  return 0;
}

小球反弹

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

int main(int argc, char *argv[])
{
  long long t=1,x=343720,y=233333;
  while(1)
  {
    if((15*t)%x==0&&(17*t)%y==0) break;
    t++;
  }
  printf("%.2f",2*sqrt(15*15*t*t+17*17*t*t));
  return 0;
}

好数

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

int main(int argc, char *argv[])
{
  int n;
  scanf("%d",&n);
  int cnt=0;
  for(int i=1;i<=n;i++)
  {
    int a[10000005];
    int idx=1;
    int t=i;
    while(t)
    {
      a[idx++]=t%10;
      t/=10;
    }
    int flag=1;
    for(int j=1;j<=idx;j++)
    {
      if(j%2==1)
      {
        if(a[j]%2==0)
        {
          flag=0;
          break;
        } 
      }
      else 
      {
        if(a[j]%2==1)
        {
          flag=0;
          break;
        }
      }
    }
    if(flag) cnt++;
  }
  printf("%d",cnt);
  return 0;
}

R 格式

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

#define MAX 2000

int main(int argc, char *argv[])
{
  int n;
  char d[1025];
  int b[MAX]={0};
  int b_len=0;
  int sum=0,k=0;
  int i;
  scanf("%d %s",&n,d);
  for(int i=strlen(d)-1;i>=0;i--)
  {
    if(d[i]!='.')
    {
      if(b_len<MAX)
      {
        b[b_len]=d[i]-'0';
        b_len++;
      }
    }
    else k=sum;
    sum++;
  }
  for(int i=0;i<n;i++)
  {
    int carry=0;
    for(int j=0;j<b_len;j++)
    {
      b[j]=b[j]*2+carry;
      if(b[j]>=10)
      {
        carry=b[j]/10;
        b[j]=b[j]%10;
      }
      else carry=0;
    }
    if(carry)
    {
      if(b_len<MAX)
      {
        b[b_len]=carry;
        b_len++;
      }
    }
  }
  if(k>0&&b[k-1]>=5)
  {
    int carry=1;
    for(i=k;i<b_len;i++)
    {
      b[i]=b[i]+1;
      if(b[i]<=9)
      {
        carry=0;
        break;
      }
      else b[i]-=10;
    }
    if(carry)
    {
      if(b_len<MAX)
      {
        b[b_len]=1;
        b_len++;
      }
    }
  }
  for(i=b_len-1;i>=k;i--)
  {
    printf("%d",b[i]);
  }
  return 0;
}

宝石组合

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

#define N 500010

int gem[N];
int num[N];

int main(int argc, char *argv[])
{
  int n;
  scanf("%d",&n);
  int max=-0x3f3f3f3f;
  for(int i=0;i<n;i++)
  {
    scanf("%d",&gem[i]);
    num[gem[i]]++;
    if(gem[i]>max) max=gem[i];
  }
  for(int i=max;i>=1;i--)
  {
    int tmp[3];
    int pos=0;
    int cnt=0;
    for(int j=i;j<=max;j+=i)
    {
      if(num[j])
      {
        cnt+=num[j];
        for(int k=0;k<num[j]&&pos<3;k++)
        {
          tmp[pos++]=j;
        }
      }
      if(cnt>=3) break;
    }
    if(cnt>=3)
    {
      for(int j=0;j<3;j++)
      {
        printf("%d ",tmp[j]);
      }
      printf("\n");
      break;
    }
  }
  return 0;
}

数字接龙

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

int n,k;
int g[11][11];
int dx[8]={-1,-1,0,1,1,1,0,-1};
int dy[8]={0,1,1,1,0,-1,-1,-1};

char path[121];
int path_len=0;

int st[11][11];
int edge[11][11][11][11];

int dfs(int a,int b)
{
  if(a==n-1&&b==n-1) 
  {
    return path_len==n*n-1;
  }
  st[a][b]=1;
  for(int i=0;i<8;i++)
  {
    int x=a+dx[i],y=b+dy[i];
    if(x<0||x>=n||y<0||y>=n) continue;
    if(st[x][y]) continue;
    if(g[x][y]!=(g[a][b]+1)%k) continue;
    if(i%2&&(edge[a][y][x][b]||edge[x][b][a][y])) continue;
    edge[a][b][x][y]=1;
    path[path_len++]=i+'0';
    if(dfs(x,y)) return 1;
    path_len--;
    edge[a][b][x][y]=0;
  }
  st[a][b]=0;
  return 0;
}

int main(int argc, char *argv[])
{
  scanf("%d %d",&n,&k);
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<n;j++)
    {
      scanf("%d",&g[i][j]);
    }
  }
  memset(st,0,sizeof(st));
  memset(edge,0,sizeof(edge));
  path_len=0;
  if(!dfs(0,0)) printf("-1\n");
  else 
  {
    path[path_len]='\0';
    printf("%s\n",path);
  }
  return 0;
}

拔河

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

#define N 1004

typedef long long ll;

ll min(ll a,ll b)
{
  return a<b?a:b;
}

ll abs_ll(ll x)
{
  return x<0?-x:x;
}

int main() {
  int n;
  scanf("%d",&n);
  ll a[N];
  for(int i=1;i<=n;i++)
  {
    scanf("%lld",&a[i]);
  }
  ll ans=1e14;
  for(int l=1;l<=n;l++)
  {
    for(int r=n;r>l;r--)
    {
      int i=l,j=r;
      ll sum1=a[i],sum2=a[j];
      ans=min(ans,abs_ll(sum1-sum2));
      if(ans==0)
      {
        printf("0");
        return 0;
      }
      while(i+1<=j)
      {
        if(sum1==sum2)
        {
          printf("0");
          return 0;
        }
        if(sum1>sum2)
        {
          j--;
          sum2+=a[j];
        }
        else if(sum1<sum2)
        {
          i++;
          sum1+=a[i];
        }
        ans=min(ans,abs_ll(sum1-sum2));
      }
    }
  }
  printf("%lld",ans);
  return 0;
}
相关推荐
小雨下雨的雨1 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
方便面不加香菜2 小时前
Linux--基础IO(一)
linux·运维·服务器
xieliyu.4 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
一条小锦吕*4 小时前
基于Spring Boot + 数据可视化 + 协同过滤算法的推荐系统设计与实现(源码+论文+部署全讲解)
spring boot·算法·信息可视化
鼎讯信通4 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..5 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
跨境数据猎手5 小时前
大数据在电商行业的应用
大数据·运维·爬虫
如竟没有火炬6 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
8Qi86 小时前
LeetCode 1143 & 718:最长公共子序列 / 最长重复子数组
算法·leetcode·职场和发展·动态规划
linyanRPA6 小时前
影刀RPA店群自动化实战:多店铺活动自动报名与促销管理架构设计
运维·自动化·办公自动化·rpa·python脚本·爬虫自动化·店群自动化