列表

详情


NC232434. [NCT058B]清新题

描述

我是 A 题!

给定 n,m,求有多少对长度为 n 的序列 a,b 合法。
两个序列 a,b 合法被定义为 :


其中 表示按位或, 表示按位异或。

输入描述

两个以空格分隔的正整数 n,m.

输出描述

一个非负整数,表示答案对  取模后的值。

示例1

输入:

3 3

输出:

233472

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 21ms, 内存消耗: 448K, 提交时间: 2022-03-18 20:19:20

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const LL mod=1e9+7;
int n,m;
LL x=1,y,a,c=1,b;

int main()
{
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<n;i++)
		c=c*2%mod;
	a=c*2%mod;
	b=a*a%mod;
	for(int i=1;i<=m;i++)
	{
		y=(y*b%mod+x*(a-1)%mod*c%mod)%mod;
		x=(x*a%mod*c%mod)%mod;
	}
	cout<<(x+y)%mod<<"\n";
	return 0;
}

上一题