第十三届题目

九进制转十进制

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;
}
相关推荐
ZHOU_WUYI2 小时前
ppo算法简单实现
人工智能·pytorch·算法
liulilittle2 小时前
C++ 无锁编程:单停多发送场景高性能方案
服务器·开发语言·c++·高性能·无锁·原子
无限进步_2 小时前
【C++】巧用静态变量与构造函数:一种非常规的求和实现
开发语言·c++·git·算法·leetcode·github·visual studio
小超超爱学习99373 小时前
大数乘法,超级简单模板
开发语言·c++·算法
Ricardo-Yang3 小时前
SCNP语义分割边缘logits策略
数据结构·人工智能·python·深度学习·算法
凌波粒3 小时前
LeetCode--344.反转字符串(字符串/双指针法)
算法·leetcode·职场和发展
啊哦呃咦唔鱼3 小时前
LeetCode hot100-543 二叉树的直径
算法·leetcode·职场和发展
sinat_286945194 小时前
harness engineering
人工智能·算法·chatgpt
少许极端4 小时前
算法奇妙屋(四十三)-贪心算法学习之路10
学习·算法·贪心算法