牛客周赛 E-茜茜的计算器

2024-06-18 00:44
文章标签 牛客 周赛 茜茜 计算器

本文主要是介绍牛客周赛 E-茜茜的计算器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原题链接:E-茜茜的计算器​​​​​​

题目大意:在计算器上显示的0~9十个数字,如果这个计算器有n个位置,可以显示n个数字,问能显示多少种不同的对称数字。只能横轴和竖轴对称。

思路:容斥,最终的答案是横轴对称的数量+纵轴对称的数量-都对称的数量。可以横轴对称的数字有0 1 8 3,这四个数字可以在n个位置随意放置,一定是对称的,那么横轴对称的数量就是4^{n}。对于纵轴对称的数字,需要对n的奇偶性质进行讨论,如果奇数,那么中间的那一个位置,可以放0和8二种数字,而且因为是纵轴对称,那么只要确定了一边另一边也就确定了,所以奇数的数量就是2*2^{n/2},如果是偶数那么中间就没有0和8,那么数量就是2^{n/2}。对于都对称的数字,那么就是由0和8这二个数字组成的数,那么如果是n是奇数,那么数量就是2*2^{n/2},如果是偶数,那么数量就是2^{n/2}.

//冷静,冷静,冷静
//调不出来就重构
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> pii;
const int N=1e6+10,mod=1e9+7;
ll ksm(ll a,ll b)
{ll ans=1;do{if(b&1)ans*=a;a*=a;b>>=1;ans%=mod;a%=mod;}while(b);return ans;
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n;cin>>n;ll ans=ksm(4,n);if(n&1){ans=ans+2*ksm(4,n/2)%mod;ans%=mod;ans=ans-2*ksm(2,n/2)%mod;ans%=mod;}else{ans=ans+ksm(4,n/2)%mod;ans%=mod;ans=ans-ksm(2,n/2)%mod;ans%=mod;}cout<<(ans%mod+mod)%mod;return 0;}

这篇关于牛客周赛 E-茜茜的计算器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

4、SpringMVC 实战小项目【加法计算器、用户登录、留言板、图书管理系统】

SpringMVC 实战小项目 3.1 加法计算器3.1.1 准备⼯作前端 3.1.2 约定前后端交互接⼝需求分析接⼝定义请求参数:响应数据: 3.1.3 服务器代码 3.2 ⽤⼾登录3.2.1 准备⼯作3.2.2 约定前后端交互接⼝3.2.3 实现服务器端代码 3.3 留⾔板实现服务器端代码 3.4 图书管理系统准备后端 3.1 加法计算器 需求: 输⼊两个整数, 点击"点

【牛客网 2017年校招模拟笔试(第一场)】超级素数幂

超级素数幂 描述 如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。 输入 输入一个正整数n(2 ≤ n ≤ 10^18) 分析 暴力枚举幂q,将n开q次方之后得到p,检查p是否为素数,并且检查p的q次幂是否等于n。 *要注意精度问题,代码待之后补充。

【牛客网 2017年校招模拟笔试(第一场)】 序列和

求序列和 描述 我们要找连续的一段长度大于等于L小于等于100整数和等于N,容易观察到合法的长度范围很小,于是我们从L开始枚举,然后找到第一个输出即可。 我的代码 最初提交了一次代码,用vector保存了所有满足条件的序列,输出长度最小的,提交之后说内存超出限制,看了一眼题目,发现内存貌似是限制在2w多k?伤心,之前做题没遇到过内存还有这么严格的限制。 修改了一下,其实这个代码并没

数独(搜索答案不唯一,牛客上测试83%)

#include <bits/stdc++.h>using namespace std;int a[10][10];int flag=0;bool check(int n,int key){//行判断for(int i=0; i<9; i++){int j=n/9;if(a[j][i]==key)return false;}//列判断for(int i=0; i<9; i++){int

LeetCode---402周赛

题目列表 3184. 构成整天的下标对数目 I 3185. 构成整天的下标对数目 II 3186. 施咒的最大总伤害 3187. 数组中的峰值 一、构成整天的下标对数目 I & II 可以直接二重for循环暴力遍历出所有的下标对,然后统计符合条件的下标对数目返回。代码如下 class Solution {public:int countCompleteDayPairs(vect

第 402 场 LeetCode 周赛题解

A 构成整天的下标对数目 I 计数:遍历 h o u r s hours hours ,记录 h o u r s [ i ] % 24 hours[i]\%24 hours[i]%24 的出现次数 class Solution {public:long long countCompleteDayPairs(vector<int>& hours) {vector<int> cnt(

用php实现加减乘除计算器

用php实现加减乘除计算器。代码很简单哦! <?php header("content-type:text/html;charset=utf-8");session_start();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/

牛客网-字节跳动真题-万万没想到之抓捕孔连顺

题目链接 地址 思路 已知:数据已排序双指针 i,ji指向刚接收数据,j指向距离i最远并且距离小于d的那个位置,此时形成区间[i,j]所以 相当于选择了最远那个并在在[i,j)中选出两个,此时C(2,i-j)具体看代码 代码 #include <iostream>#include <vector>using namespace std;// 求从n个中选出两个的组合数long l

牛客网-字节跳动公司真题-万万没想到之聪明的编辑

万万没想到之聪明的编辑 牛客网-字节跳动公司真题题目牛客链接 解题 思路 双指针具体思路代码中 代码 #include<iostream>#include<cstring>using namespace std;const int N=1000010;

二叉树的下一个节点-牛客题解

环境 C++ 11(clang3.9) 思路 推倒过程 前提: 要求是中序遍历的下一节点 中序: 先左子树 再根 再右子树 通过代码 class Solution{public:TreeLinkNode *GetNext(TreeLinkNode *pNode){//思路//// - 下一节点为当前节点的右子树的最左子节点// - 当没有右子树时 下一节点为 向上第一个左树枝的父节