腾迅马拉松(一)解题报告

2024-05-03 19:32
文章标签 报告 马拉松 解题 腾迅

本文主要是介绍腾迅马拉松(一)解题报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                                腾迅马拉松(一)解题报告

 

 

                                                                                                                      小明系列故事——师兄帮帮忙

题目链接:Click Here~

 

题目分析:

    题目说明给你三个数分别为n,t,k分别表示n个数,t次时间,每次乘以k。且每次的变化规则为:

a[i] = a[i-1]'*K; (a[i-1]'为前一次的数,当i=1时a[1] = a[n]'*K)。题目要求你输出经过t次后的a[1]....a[n].

  [Technical Specification]
  T <= 100
  1 <= n <= 10 ^ 4
  0 <= t <= 10 ^ 9  其中 t = 0 表示初始状态
  1 <= k <= 10 ^ 9
  1 <= ai<= 10 ^ 9

        由于数字可能会很大,所以只要你输出数字对10^9 + 7取余以后的结果

思路分析:

   从题目数据可以看出枚举肯定超时,则我们就要另想他法。有什么办法呢?很显然,题目没经过n次。为一个周期,所以我们只要n这个范围内找就好了。但是,还要用到一个快速冪的方法。一开始我看到模很大,还以为要用到乘法冪,后来发现数据在 long long 范围内,所以就省了一步。还有那个啥的,hdu的输出格式真坑人。

 

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;typedef __int64 LL;
const int N = 1e4 + 5;
const int MOD = 1e9+7;
LL a[N];
//LL MulMod(LL base,LL b)
//{
//    LL res = 0;
//    base %= MOD;
//    while(b)
//    {
//        if(b&1){
//           res += base;
//           if(res > MOD)
//             res -= MOD;
//        }
//        base <<= 1;
//        if(base > MOD) base -= MOD;
//        b >>= 1;
//    }
//    return res;
//}
LL PowMod(LL base,LL n)
{LL res = 1;base %= MOD;while(n){if(n&1)res = res*base%MOD;base = base*base%MOD;n >>= 1;}return res;
}
int main()
{int T;LL n,k,t;scanf("%d",&T);while(T--){scanf("%I64d%I64d%I64d",&n,&t,&k);for(int i = 1;i <= n;++i)scanf("%I64d",&a[i]);LL res = PowMod(k,t);t %= n;if(!t){printf("%I64d",(a[1]*res)%MOD);for(int i = 2;i <= n;++i)printf(" %I64d",(a[i]*res)%MOD);printf("\n");continue;}printf("%I64d",(a[n-t+1]*res)%MOD);for(int i = n-t+2;i <= n;++i){    printf(" %I64d",(a[i]*res)%MOD);}for(int i = 1;i < n-t+1;++i){   printf(" %I64d",(a[i]*res)%MOD);}printf("\n");}return 0;
}


  

 

                            湫湫系列故事——减肥记II

 

题目分析:

      本题可以是线段树来做。但是好久没敲线段树的代码了,手疏了。下次复习线段树的时候在来不上线段树的代码吧,先看看简单的暴力版吧。

思考:

   其实,以前就听学长说过,去大公司面试的时候,面试官会给你一道题目。而且是大家都会做的,但是这时候就看谁会把这道题做的最优了。其实这道题也是,你暴力可以过,但是不是最优的,也肯定不是出题人想要的。

 

 

/*a > c,b > da > c,b < da < c,b > da < c,b < d
*/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;const int N = 2e3 + 5;
const int MAX = 5e5 + 5;
int hash[N],a[MAX];
int main()
{int n;while(~scanf("%d",&n)){int HH,MM,H,M,sum = 0;sum = 24*60;memset(hash,0,sizeof(hash));for(int i = 0;i < n;++i){scanf("%d:%d",&HH,&MM);scanf("%d:%d",&H,&M);HH = HH*60 + MM;             //start timeH = H*60 + M;             // end timefor(int i = HH;i < H;++i){if(!hash[i]){sum--;hash[i] = 1;}}}printf("%d\n",sum);}return 0;
}


 

                             小Q系列故事——为什么时光不能倒流

 

题目重现:

     [Technical Specification]
                   00<=HH<=11
                   00<=hh<=99
                   00<=MM, SS, mm, ss<=59

题目分析:

    这道题也是上周我校的比赛题,当时脑残的没看到输出的格式是HH:MM:SS,而HH<=11.所以,必须是结果HH<12,即,要求模12。当时比赛的时候居然没想到,wrong了6次。

 

思考:

    以后,看题一定要认真仔细。看清楚题目的具体要求,这道题不难,但是就是题没看清题目要求。这都是借口!!!!!!!!!!!!以后一定要注意在注意!!!!!!!!!

 

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;int main()
{int T;scanf("%d",&T);while(T--){int H,HH,MM,M,SS,S;scanf("%d:%d:%d",&H,&M,&S);scanf("%d:%d:%d",&HH,&MM,&SS);H = (H-HH)%24;M = M - MM;S = S - SS;if(S < 0){M--;S += 60;if(M < 0){H--;M += 60;}if(H < 0)H += 24;}else{if(M < 0){H--;M += 60;}if(H < 0)H += 24;}H %= 12;printf("%02d:%02d:%02d\n",H,M,S);}return 0;
}


 

这篇关于腾迅马拉松(一)解题报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957471

相关文章

芯片后端之 PT 使用 report_timing 产生报告如何阅读

今天,就PT常用的命令,做一个介绍,希望对大家以后的工作,起到帮助作用。 在PrimeTime中,使用report_timing -delay max命令生成此报告。switch -delay max表示定时报告用于设置(这是默认值)。 首先,我们整体看一下通过report_timing 运行之后,报告产生的整体样式。 pt_shell> report_timing -from start_

android反馈Crash报告

此文章转载他人,担有所改动,,在全局获取异常有所改动 为什么需要反馈Crash报告?   做Android应用程序,要尽量避免程序Crash的发生。虽然说零Crash是程序员追逐的最终目标,但是现实的情况是,程序员只能尽量的减少Crash的发生,而几乎不可能完全杜绝Crash。也许,你认为你的应用的健壮性已经近乎完美,轻松的经受住了测试部门魔鬼般的考验,但是当你的应用发布到市

用R Markdown 生成数据分析报告

为了创建 R Markdown报告,打开text文件,并将它保存为.Rmd 文件。File > New File > Text File 确保保存成 .Rmd文件, RStudio IDE能够很大程度上帮助你完成整个任务.,你可以保存通过File > Save。修改扩展名。 R Markdown 报告由一下3部分组成: text文本 knitr 处理 R code YAML的

杭电ACM hdu 2110 Crisis of HDU 解题报告(母函数)

Problem Description 话说上回讲到HDU大战东洋小苟,结果自然是中方大胜,这一战也使得海东集团在全球同行业中的地位更加巩固。随着集团的发展,很多创业时期的元老逐步功成身退,先是8600移民海外,然后是linle夫妇退隐山林,逐渐的,最初众多的元老只剩下XHD夫妇和Wiskey三人了。 到了2020年,因为扩张过度加上老鼠数量逐年减少,公司的发展遇到了前所未有的危机,此时集团已经

杭电ACM hdu 2082 找单词 解题报告(母函数)

Problem Description 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值<=50的单词呢?单词的价值就是组成一个单词的所有字母的价值之和,比如,单词ACM的价值是1+3+14=18,单词HDU的价值是8+4+21=33。(组成的单词与排列顺序无关,比如

杭电ACM hdu 2079 选课时间 解题报告(母函数)

Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合。你来帮帮他吧。(xhd认为一样学分的课没区别)   Input 输入数据的第一行是一个数据T,表示有T组数据。 每组数据的第一行是两个整数n(1 <= n <= 40),k(1 <= k <= 8)。 接着有k行,每行有两个整数a(1 <= a <= 8),b

【洛谷P3366】【模板】最小生成树 解题报告

洛谷P3366 -【模板】最小生成树 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 N , M N,M N,M,表示该图共有 N N N 个结点和 M M M 条无向边。 接下来 M M M 行每行包含三个整数 X i , Y i , Z i X_i,Y_i,Z_i Xi​,Yi​,Zi​,表示有一条长度为 Z

ICPC2018 徐州区域赛 比赛报告

ICPC2018 徐州区域赛 比赛报告 Sunder-杜逸闲 关于本比赛 本场比赛于2018.10.28在徐州由中国矿业大学承办,本人所在队伍Sunder – 由杜逸闲,裘家浩,周浩博组成的队伍 – 拿到了14/289金牌。 比赛过程 开场杜逸闲从后往前看,裘家浩从中间开始看,周浩博从前往后看题。 过了20分钟才有人过A题,杜逸闲开始读A题冗长的题面,发现A题是较简单题。 通过A之后有人

docker之SonarQube导出PDF报告

目录 一、拉取镜像二、下载插件三、安装插件四、配置PDF导出插件五、创建测试项目并运行六、导出PDF报告 一、拉取镜像 请使用 docker pull sonarqube:8.7.1-community 拉取镜像,高版本目前找不到支持 PDF导出的插件: docker pull sonarqube:8.7.1-community 二、下载插件 下载 sonar-pdf

2022年大作业参考报告-使用C++语言开发小学生成绩管理系统、中学生成绩管理系统、大学生成绩管理系统【240621更新】

背景: 目录 第一章 需求分析    2 1.1    问题描述    2 6.1    功能需求    2 6.2    开发环境    2 6.3    开发过程    2 第二章 概要设计    3 2.1    总体设计    3 2.2    类的定义    3 2.3    接口设计    5 2.4    运行界面设计    6 第三章 详细设计    7 3.1    输入模块