kuangbin专题十四 LightOJ1213 规律+快速幂

2024-02-02 08:32

本文主要是介绍kuangbin专题十四 LightOJ1213 规律+快速幂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:
告诉你一段代码,然后要你找规律进行优化。
题解:
一看这道题就知道是有规律的但是硬是想了一下午都没想出来,结果上手打代码模拟一番之后就得出了答案,ORZ,不禁感叹实践出真理。这道题是怎么个规律呢?公式为:sum*k*n^(k-1).这个公式怎么的出来的呢?首先sum就是数组的总和,k就是多少行,n是数组的长度。好,现在来推导规律,首先我们看到代码就应该知道最里面那一行肯定是进行了n^k次的,然后我们先看那段代码中的a[k]是不是也运行n^k次呢,答案是肯定的。其中运行n^k中有n次是不同的数值的,就是数组中的长度,也就是可以用n次运算来算出总和sum的,那么就变成了n^(k-1)了,很好,那么*k又是怎么样来的呢,我们先将a[k]删去,看看a[k-1]项,a[k-1]在最里面那一行是不是也一样运算了n^k次呢?对,没错,然后就是用n次算出总和sum了,那么就可以得出了公式sum*k*n^(k-1)了,然后就是用快速幂来计算结果。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long int
const int MAXN=1000+7;
LL a[MAXN];
LL q_pow(LL p,LL n,LL mod)
{LL ans=1;while(n){if(n&1)ans=(ans*p)%mod;p=(p*p)%mod;n>>=1;//  printf("%lld %lld\n",ans,p);}
//  printf("%lld\n",ans);return ans%mod;
}
int main()
{int t,Case=1;scanf("%d",&t);while(t--){LL n,k,mod,sum=0;scanf("%lld%lld%lld",&n,&k,&mod);for(int i=1;i<=n;i++)scanf("%lld",&a[i]),sum=(sum+a[i])%mod;sum=((sum*q_pow(n,k-1,mod))%mod*k)%mod;printf("Case %d: %lld\n",Case++,sum);}
}

这篇关于kuangbin专题十四 LightOJ1213 规律+快速幂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

v0.dev快速开发

探索v0.dev:次世代开发者之利器 今之技艺日新月异,开发者之工具亦随之进步不辍。v0.dev者,新兴之开发者利器也,迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势,助汝速速上手,提升开发之效率。 何谓v0.dev? v0.dev者,现代化之开发者工具也,旨在简化并加速软件开发之过程。其集多种功能于一体,助开发者高效编写、测试及部署代码。无论汝为前端开发者、后端开发者

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简