牛客网-小白月赛6-J-洋灰三角
题目链接https://www.nowcoder.com/acm/contest/136/J
这题我还是不找规律了,老老实实推吧,传说找规律也可以,我还是算了
递推式:f(n)=k*f(n-1)+p
是的,你没有看错,这玩意是什么???是高中的数列求和啊,什么你没看出来,这玩意外号——一阶线性递推
等式两边同时加p/k-1 f(n)+p/(k-1) = k(f(n-1)+p/k-1);不信你可以推一下试试
那么f(n)可以通过等比数列求出f(n)=p/(k-1)*(k^(n-1))-p/(n-1);
再用分组求和那么前n项和公式为T(n)=(k^n-1)/(k-1)+p*(k^n-1)/(k-1)^2-p*n/(k-1)=(1+p/(k-1))*(k^n-1)/(k-1)-p*n/(k-1)
注意当n==1时T(n)=p*n*(n-1)/2+n;
有分数。求一下(k-1) % 1e9+7的逆元inv=pow(k-1,mod-2);
#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#define ll long long
using namespace std;;
const ll mod = 1e9+7;
ll pow(ll a,ll b)
{
ll ans = 1;
while(b)
{
if (b&1)
{
ans = ans*a%mod;
}
a = a*a%mod;
b/=2;
}
return ans;
}
int main()
{
ios::sync_with_stdio(0);
ll n,k,p;
ll ans=0;
while(~scanf("%lld%lld%lld",&n,&k,&p))
{
if (k==1)
{
ans=(n*(n-1)%mod/2*p+n)%mod;
printf("%lld\n",ans);
}
else
{
ll inv=pow(k-1,mod-2);
ans=(1+p*inv%mod)%mod*((pow(k,n)-1+mod)%mod)%mod*inv%mod;
ans=(ans-p*inv%mod*n%mod+mod)%mod;
printf("%lld\n",ans);
}
}
return 0;
}
牛客网-小白月赛6-J-洋灰三角的更多相关文章
- 牛客小白月赛6 J 洋灰三角 数学
链接:https://www.nowcoder.com/acm/contest/136/J来源:牛客网 题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WH ...
- 牛客网小白月赛5I区间(差分数组)
链接:https://www.nowcoder.com/acm/contest/135/I来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 牛客网小白月赛6C(DFS,思维)
#include<bits/stdc++.h>using namespace std;vector<int>tree[1000010];int sum=0;int dfs(in ...
- 牛客网小白月赛6H(最小生成树【克鲁斯卡尔】)
#include<bits/stdc++.h>using namespace std;long long sum=0;struct node{ int a,b,len;}road[5 ...
- 牛客网小白月赛1 B,I
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> ...
- 牛客网 小白赛4 A三角形【贪心】
[前驱]:在指定长度的棍子中找到能组成最大周长三角形的三根棍子 链接:https://www.nowcoder.com/acm/contest/134/A 来源:牛客网 题目描述 铁子从森林里收集了n ...
- 牛客网 牛客小白月赛1 J.おみやげをまらいました
J.おみやげをまらいました 链接:https://www.nowcoder.com/acm/contest/85/J来源:牛客网 随便写写. 代码: 1 #include<ios ...
- 牛客小白月赛2 J 美 【构造】
链接:https://www.nowcoder.com/acm/contest/86/J来源:牛客网 题目描述 最后,Sεlιнα(Selina) 开始了选美大赛. 一如既往地,Sεlιнα 想最大化 ...
- 牛客网 牛客小白月赛1 H.写真がとどいています
H.写真がとどいています 链接:https://www.nowcoder.com/acm/contest/85/H来源:牛客网 这个题数乱了,导致wa了好几次. 特别弱智,从A开始往上,就 ...
随机推荐
- 第三章 Hyper-V 2012 R2配置选项
原书中的第二章 是介绍了下hyper-v的管理器和检查点的使用,导入导出虚拟机,所以我跳过了不高兴写,很简单.直接进入第三部分,介绍虚拟机的三个重要组成部分:CPU,内存,硬盘的配置选项. Hyper ...
- Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)
由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的.这篇博文主要是记录vim使用和配置相关的一些知识点. 关于vim ...
- Web的攻击技术笔记
HTTP不具备必要的安全功能,就是一个通用的单纯协议机制,比如远程登录时会用到的SSH协议来说,SSH具备协议级别的认证及回话管理等功能,HTTP协议则没有.另外在架设SSH服务方面,任何人都可以轻易 ...
- Lua与C交互之基础操作(1)
@(语言) Lua是一个嵌入式的语言,可以Lua可以作为程序库用来扩展应用的功能,也可以注册有其他语言实现的函数,这些函数可能由C语言(或其他语言)实现,可以增加一些不容易由Lua实现的功能.这就是L ...
- navicat连接mysql时出现2003(10060)错误
问题解决步骤: 参考http://jingyan.baidu.com/article/95c9d20dac9040ec4f75617a.html,发现是防火墙未关闭: 那么我们就有两种方法去解决了 关 ...
- web自动化-窗口句柄及位置变化
在进行web自动化时,很容易会遇到多窗口进行切换测试,下面就对多窗口的一些句柄和切换及窗口句柄顺序简单总结一下 from selenium import webdriver driver = webd ...
- Sublime Text的使用
本文目录 1.下载安装Sublime Text 2.配置Python IDE环境 3.sublime anaconda载入出现错误 4.Sublime Text快捷键 1.下载安装Sublime Te ...
- eureka分区的深入讲解
背景 用户量比较大或者用户地理位置分布范围很广的项目,一般都会有多个机房.这个时候如果上线springCloud服务的话,我们希望一个机房内的服务优先调用同一个机房内的服务,当同一个机房的服务不可用的 ...
- windows下elasticsearch6.X安装IK分词器
文章来源:https://www.cnblogs.com/hts-technology/category/1167823.html (一)到官网下载https://github.com/medcl/e ...
- leetcode701. Insert into a Binary Search Tree
https://www.cnblogs.com/grandyang/p/9914546.html 类似于二分查找的方法,用迭代的方法去做 注意:无论是进入左子树还是右子树,左右子树都变成了新的数,所以 ...