第十三届题目

九进制转十进制

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

int main(int argc, char *argv[])
{
  printf("%d",2*1+2*9+2*9*9*9);
  return 0;
}

顺子日期

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

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

刷题统计

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

typedef long long ll;

int main(int argc, char *argv[])
{
  ll a,b,n;
  scanf("%lld %lld %lld",&a,&b,&n);
  ll week=a*5+b*2;
  ll t=n%week;
  ll x=n/week*7;
  if(t!=0)
  {
    ll sum=0,k=0;
    for(int i=1;i<=5;i++)
    {
      sum+=a;
      if(sum>=t) 
      {
        printf("%lld",x+i);
        return 0;
      }
    }
    for(int i=1;i<=2;i++)
    {
      sum+=b;
      if(sum>=t)
      {
        printf("%lld",x+i+5);
        return 0;
      }
    }
  }
  printf("%lld",x);
  return 0;
}

修剪灌木

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

int main()
{
  int n;
  scanf("%d",&n);
  for(int i=1;i<=n/2;i++)
  {
    printf("%d\n",2*n-2*i);
  }
  if(n%2!=0) printf("%d\n",n-1);
  for(int i=n/2;i>0;i--)
  {
    printf("%d\n",n*2-i*2);
  }
  return 0;
}

X 进制减法

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

int max2(int a,int b)
{
  return a>b?a:b;
}

int max3(int a,int b,int c)
{
  int t=max2(a,b);
  return t>c?t:c;
}

int main(int argc, char *argv[])
{
  int n;
  scanf("%d",&n);
  int ma;
  scanf("%d",&ma);
  int a[100005];
  for(int i=ma-1;i>=0;i--)
  {
    scanf("%d",&a[i]);
  }
  int mb;
  scanf("%d",&mb);
  int b[100005];
  for(int i=mb-1;i>=0;i--)
  {
    scanf("%d",&b[i]);
  }
  int t=max2(ma,mb);
  long long ans=0;
  for(int i=t-1;i>=0;i--)
  {
    int m1=(i<ma)?a[i]:0;
    int m2=(i<mb)?b[i]:0;
    int x=max3(m1+1,m2+1,2);
    ans=(ans*(long long)x+(long long)(m1-m2))%1000000007;
    if(ans<0) ans+=1000000007;
  }
  printf("%lld",ans);
  return 0;
}

统计子矩阵

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

int main(int argc, char *argv[])
{
  int n,m;
  long long k;
  int a[1000][1000];
  scanf("%d %d %lld",&n,&m,&k);
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {
      scanf("%d",&a[i][j]);
    }
  }
  long long cnt=0;
  long long col_sum[1000];
  for(int top=0;top<n;top++)
  {
    for(int j=0;j<m;j++)
    {
      col_sum[j]=0;
    }
    for(int bottom=top;bottom<n;bottom++)
    {
      for(int j=0;j<m;j++)
      {
        col_sum[j]+=a[bottom][j];
      }
      int left=0;
      long long current_sum=0;
      for(int right=0;right<m;right++)
      {
        current_sum+=col_sum[right];
        while(current_sum>k&&left<=right)
        {
          current_sum-=col_sum[left];
          left++;
        }
        if(current_sum<=k)
        {
          cnt+=(long long)(right-left+1);
        }
      }
    }
  }
  printf("%lld",cnt);
  return 0;
}

积木画

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

typedef long long ll;
const mod=1000000007;

int dp[10000010][3];

int main(int argc, char *argv[])
{
  dp[0][2]=1;
  dp[1][2]=1;
  int n;
  scanf("%d",&n);
  for(int i=2;i<=n;i++)
  {
    dp[i][0]=((ll)dp[i-1][1]+dp[i-2][2])%mod;
    dp[i][1]=((ll)dp[i-1][0]+dp[i-2][2])%mod;
    dp[i][2]=((ll)dp[i-1][2]+dp[i-1][0]+dp[i-1][1]+dp[i-2][2])%mod;
  }
  printf("%d",dp[n][2]);
  return 0;
}

扫雷

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

int main(int argc, char *argv[])
{
  int n,m;
  scanf("%d %d",&n,&m);
  int a[1005][1005],b[1005][1005];
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {
      scanf("%d",&a[i][j]);
    }
  }
  int dx[]={1,1,1,-1,-1,-1,0,0};
  int dy[]={1,-1,0,1,-1,0,1,-1};
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {
      if(a[i][j]==1) 
      {
        b[i][j]=9;
        continue;
      }
      int cnt=0;
      for(int k=0;k<8;k++)
      {
        int x=i+dx[k],y=j+dy[k];
        if(x>=0&&y>=0&&x<n&&y<m) 
        {
          if(a[x][y]==1) cnt++;
        }
      }
      b[i][j]=cnt;
    }
  }
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {
      printf("%d ",b[i][j]);
    }
    printf("\n");
  }
  return 0;
}

砍竹子

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

typedef long long ll;

ll h[200005][8];

ll sum(ll n)
{
  ll res=sqrtl(n/2+1);
  return res;
}

int main(int argc, char *argv[])
{
  ll n,res=0;
  scanf("%lld",&n);
  for(int i=0;i<n;i++)
  {
    scanf("%lld",&h[i][0]);
    for(int j=1;h[i][j-1]>1;j++)
    {
      h[i][j]=sum(h[i][j-1]);
      res++;
    }
  }
  for(int i=0;i<n-1;i++)
  {
    for(int j=0;h[i][j]!=1;j++)
    {
      for(int k=0;h[i+1][k]!=1;k++)
      {
        if(h[i][j]==h[i+1][k])
        {
          res--;
          break;
        }
      }
    }
  }
  printf("%lld",res);
  return 0;
}
相关推荐
RisunJan8 小时前
Linux命令-patch (为开放源代码软件安装补丁程序)
linux·服务器·算法
a诠释淡然8 小时前
C++模板元编程—现代C++的黑魔法
开发语言·c++
汉克老师8 小时前
GESP2026年3月认证C++六级真题与解析(单选题1-8)
c++·多态··构造函数·循环队列·bst·gesp6级
一条大祥脚8 小时前
ABC460贪心|多源BFS|数论|计数|线段树|树的直径
算法·宽度优先
社交怪人8 小时前
【判断整除】信息学奥赛一本通C语言解法(题号1046)
c语言
charlie1145141918 小时前
现代C++工程:constexpr 基础:编译期求值的艺术
开发语言·c++
tianyuanwo8 小时前
C语言编译完全指南:从工具链到跨架构静态与动态编译
c语言·动态编译·静态编译
小欣加油8 小时前
leetcode121买卖股票的最佳时机
数据结构·c++·算法·leetcode·职场和发展
韭菜钟8 小时前
将vscode的数据从C盘迁移至D盘
c语言·ide·vscode
牛油果子哥q8 小时前
【C++运算符重载】C++运算符重载终极精讲:单目/双目/关系/赋值运算符重载、成员与全局重载、重载禁区、底层原理与企业级工程规范
开发语言·c++