【找规律】【递推】【二项式定理】Codeforces Round #419 (Div. 1) B. Karen and Test

news/2025/2/25 18:55:28

打个表出来看看,其实很明显。

推荐打这俩组

11

1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000

 

12

1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000

 

 

打出表来看出来,n为偶数时,每隔两行,对原序列的奇数项分配的权重形成二项展开式。

n为奇数时,每隔四行,形成二项展开式。

 

所以只需要求出接近最后的某一行中的二项式系数即可。(有个O(n)的递推式可以直接求杨辉三角某一行的值)

最后距离答案已经不超过四行了,暴一下就行了。

 

#include<cstdio>
#include<cstring>
using namespace std;
#define MOD 1000000007ll
typedef long long ll;
ll n,nn;
ll a[200010],C[200010],b[10],c[10];
ll Quick_Pow(ll a,ll p)
{
    if(!p) return 1;
    ll ans=Quick_Pow(a,p>>1);
    ans=ans*ans%MOD;
    if((p&1)==1) ans=(a%MOD*ans)%MOD;
    return ans;
}
int main(){
	scanf("%I64d",&n);
	for(ll i=1ll;i<=n;++i){
		scanf("%I64d",&a[i]);
	}
	int tmp=0;
	if(!(n&1ll)){
		nn=n/2ll-1ll;
		tmp=2;
	}
	else{
		nn=n;
		++tmp;
		while((nn-1ll)%4ll!=0ll){
			--nn;
			++tmp;
		}
		nn/=2ll;
	}
	C[0]=1;
	for(ll i=1ll;i<=nn;++i){
		C[i]=((C[i-1]*(nn-(i-1ll)))%MOD*Quick_Pow(i,MOD-2ll))%MOD;
	}
	for(int i=1;i<=tmp;++i){
		for(int j=i,k=0;j<=n;j+=2,++k){
			b[i]=(b[i]+(a[j]%MOD*C[k])%MOD)%MOD;
		}
	}
	ll sum=0;
	for(ll i=n;i>(ll)tmp;--i){
		sum+=(i-1ll);
	}
	bool op=(sum%2ll==0 ? 1 : 0);
	for(int i=tmp;i>1;--i){
		for(int j=1;j<i;++j){
			if(op){
				c[j]=b[j]+b[j+1];
			}
			else{
				c[j]=b[j]-b[j+1];
			}
			op^=1;
		}
		memcpy(b,c,sizeof(c));
	}
	printf("%I64d\n",(b[1]+MOD)%MOD);
	return 0;
}

转载于:https://www.cnblogs.com/autsky-jadek/p/7043754.html


http://www.niftyadmin.cn/n/712664.html

相关文章

自我时间管理的十大技巧

你是否有过这样的经历&#xff1a;某一天&#xff0c;你雄心勃勃地准备把手底下的事清理干净&#xff0c;可到头来却一事无成?也许每个人都曾有过这样的经历&#xff0c;但在某些人身上表现得格外明显。时间管理可以帮助你把每一天、每一周甚至每个月的时间进行有效的合理安排…

如何用python做六色风车_python压测工具Locust

python压测工具LocustLocust介绍Locust作为基于Python语言的性能测试框架。其优点在于他的并发量可以实现单机10倍于LoadRunner和Jmeter工具。他的工作原理为协程并发&#xff0c;也就是gevent库。Locust的缺点也显而易见&#xff0c;他没有友好的性能监控页面&#xff0c;没有…

斐讯k1潘多拉专版固件_斐讯路由器K2刷机-斐讯k1-k2华硕及潘多拉固件下载__飞翔下载...

斐讯K2最近在路由器领域也算是小有名气了&#xff0c;但跟其他比较火的路由器不同&#xff0c;这款路由器从产品本身来说可以说是毫无亮点&#xff0c;最大的亮点在于其“免费”的特性。既然是免费的&#xff0c;硬件也是很牛掰&#xff01;那么不要白不要&#xff0c;PO主在同…

linux配置防火墙 Centos7下 添加 端口白名单

最近在阿里云服务器centos7上部署项目 要开启8484端口 &#xff0c; CentOS 7默认使用的是firewall作为防火墙 在firewall下开启端口白名单 1.查看下防火墙的状态&#xff1a;systemctl status firewalld 需要开启防火墙 systemctl start firewalld.service firewall-cmd --z…

HDU 2018:母牛的故事(动态规划)

题目传送门&#xff1a;HDUOJ 2018&#xff1a;母牛的故事 动态规划&#xff1a;小牛在出生后第四年成为大牛就可产仔了&#xff0c;所以说三年前就已经存在的牛&#xff0c;在三年后&#xff08;也就是在今年&#xff09;一定会产仔。 #include <iostream> #include &…

Java——泛型(概念理解+应用举例)

1.泛型的概念 泛型是一种末知的数据类型&#xff0c;当我们不知道使用什么数据类型的时候&#xff0c;可以使用泛型。泛型也可以看成是一个变量用来接收数据类型。E e&#xff1a;Element元素&#xff0c;T t&#xff1a;Type类型。 集合中可以存储任意类型的对象元素&#xff…

让视频压制更简单

又一次不务正业了。 一直待在一个美剧字幕组做后期压制工作&#xff0c;也经常被问到“要怎么压制&#xff1f;”这种即使用一二十句话都无法说清的问题。 因为自己经历过&#xff0c;深知软件安装、参数配置之痛&#xff0c;当翻阅了数十篇资料都无法配置成功&#xff0c;气到…

微信小程序下拉刷新 并重新加载数据

1.在json页面配置&#xff1a; {"enablePullDownRefresh": true } 2.调用刷新函数 onPullDownRefresh: function() { wx.showNavigationBarLoading() //在标题栏中显示加载this.updateBlogs() //重新加载数据 //模拟加载 1秒setTimeout(function () {// completewx…