ZJUT1593 九九天王数

本文介绍了一种ACM竞赛中快速解决特定类型问题的方法,通过预先筛选满足条件的数字,避免了逐个判断的高时间复杂度,显著提高了算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem Address:http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1593

 

其实算是一道水题吧。

 

刚好看到有人提交,便做了一下。发现之前自己是做过的,但那个时候超时,之后不知道该怎么继续做。没想到这次很快就做出来了。

 

听过一个人的话,说的是,做了100道水题,水题没了,然后艰难地过了50道,之后又出现了100道水题,然后水题又没了,然后再艰难地过50道……如此反复。也许你并不知道你的进步,但是你确实是在进步。

 

 

 

讲下自己的做法。

 

之前是直接对每个数进行判断是否满足条件,这种方法是很费时的,即使优化出来,时间也会花很多。

 

这次我是直接进行筛选。把各个位是9的数以及9的倍数都先筛好;而不是对每个数进行判断。然后再计算在每个数之前有多少个数满足条件。后面这个有点小变动,就是根据输入的数,如果比之前的数小则可以直接查找出来,否则在之前计算的基础下继续计算下去。结果出来是节省了大量的时间和空间。

 

以下贴代码:

 

#include <iostream>
using namespace std;
int main()
{
 int num[20001],i,j,k,ct=1,jt=9,n;
 memset(num, 0, sizeof(num));
 for (i=18; i<=20000; i=i+9) num[i] = 1;//9倍数
 for (i=9; i<=20000; i=i+10) num[i] = 1;//个位是9
 //十位是9
 for (i=90; i<=99; i++) num[i] = 1;
 for (j=0; j<=9; j++)
 {
  for (k=100; k<=19900; k=k+100)
  {
   num[k+j+90] = 1;
  }
 }
 //百位是9
 for (i=900; i<=999; i++) num[i] = 1;
 for (j=0; j<=99; j++)
 {
  for (k=1000; k<=19000; k=k+1000)
  {
   num[k+j+900] = 1;
  }
 }
 //千位是9
 for (i=9000; i<=9999; i++) num[i] = 1;
 for (i=19000; i<=19999; i++) num[i] = 1;
 while(scanf("%d", &n)!=EOF)
 {
  if (n>jt)
  {
   for (i=jt+1; i<=n; i++)
   {
    if (num[i]==1) ct++;
    num[i] = ct;
   }
   jt=n;
  }
  printf("%d/n", num[n]);
 }
 return 0;
}

 

 

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
### 浙江工业大学计算机网络原理课程资料与教学资源 浙江工业大学自2020年起调整了计算机专业的研究生入学考试科目,其中包含了据结构和计算机网络两门核心课程[^1]。这表明学校对于计算机网络原理的教学非常重视。 #### 课程教材推荐 通常情况下,高校开设的《计算机网络》课程会选用经典的教科书作为主要参考资料。例如,《Computer Networking: A Top-Down Approach》以及国内广泛使用的谢希仁主编的《计算机网络》都是不错的选择。虽然具体到浙江工业大学可能有特定指定版本,但这些书籍可以作为一个很好的起点来理解该领域基础知识。 #### 在线学习平台 为了帮助学生更好地掌握知识点,许多大学都会利用在线教育平台发布配套视频讲座和其他多媒体形式的学习材料。建议访问学校的官方网站或联系授课教师获取官方认可的学习链接。此外,像中国大学MOOC这样的公共平台上也可能存在由该校或其他知名院校提供的相关公开课。 #### 实验室实践机会 根据以往经验,在完成理论部分之后,参与实际操作练习是非常重要的环节之一。浙江工业大学可能会设置专门针对本学科方向的学生开放实验室时间表,允许他们在指导下进行路由配置、网络安全测试等方面的动手实验活动。这类实践活动有助于加深对抽象概念的理解程度。 ```bash # 如果想要进一步了解具体的实验安排, # 可以尝试通过邮件咨询相关部门负责人。 echo "发送电子邮件至cs@zjut.edu.cn询问更多详情" ``` #### 学术交流论坛 积极参与学术讨论也是提高个人能力的有效途径之一。加入一些活跃于互联网上的专业技术社区(如GitHub Discussions、Stack Overflow等),不仅可以与其他爱好者分享见解,还能够及时了解到行业内的最新动态和发展趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值