daimayuan每日一题#851 Good Permutations
Good Permutations - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/851思路:纯纯推公式题。
首先考虑如何成环,
对于数列中三个数 ....a1......a2.....a3.......,如果a1,a3是对于a2满足条件的两个数,namo,a2连a1,a2连a3.因为是个排列,所以a1,a3肯定有个是大的数,假设a1>a3,namo,由条件可以得到,a1到a3之间没有比a2大的数,namo,a1和a3肯定也可以连一条边。这时候就可以就可以构成环。
namo,怎么求呢,不如考虑其的反面,有多少个不难构成这种情况,不难发现就是要构成这种情况:
最高点那个位置就是n,namo还剩下n-1个数,考虑n左边有0,1,2......n-1个数的情况之和。就是
C(i,n-1),二项式之和就是
所以就推出了公式: n!-
代码相当简单:
//#define pei_pei_//#include<bits/stdc++.h>
#include<iostream>
#include<cmath>
#include<queue>
#include<vector>
#include<string>
#include<cstring>
#include<functional>
#include<iomanip>
#include<map>
#include<unordered_map>
#include<algorithm>
#include<set>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define FI first
#define SE second
#define _for(type,i,a,b) for(type i=(a);i<(b);++i)
#define _efor(type,i,a,b) for(type i=(a);i<=(b);++i)
#define _rfor(type,i,a,b) for(type i=(a);i>(b);--i)
#define _refor(type,i,a,b) for(type i=(a);i>=(b);--i)
#define _sfor(p,st) for(auto &p:st)
#define endl '\n'
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<double,int> pdi;
const double pi=acos(-1.0);
const double eps=1e-8;
const int mod=1e9+7;
const int _mod=998244353;
const ll inf=0x3f3f3f3f3f3f3f3f;
const int maxn=200010;
ull base=1331;
//-------------------------------------------------------------------ll po[1000010];ll f_mod(ll x,ll n){ll res=1;while(n){if(n&1)res=res*x%mod;x=x*x%mod;n>>=1;}return res;}
//-------------------------------------------------------------------
signed main(){//ifstream cin("D:\\in.txt");//ofstream cout("D:\\out.txt");IOS;#ifdef pei_pei_double be=clock();#endif // err//==================================================================po[0]=1;_efor(int,i,1,1000000){po[i]=(po[i-1]*i)%mod;;}ll T,n;cin>>T;while(T--){cin>>n;cout<<(po[n]-f_mod(2,n-1)+mod)%mod<<'\n';}//==================================================================#ifdef pei_pei_double en=clock();cout<<endl<<"time: "<<fixed<<setprecision(8)<<en-be<<" ms";#endif // errreturn 0;
}
daimayuan每日一题#851 Good Permutations相关推荐
- daimayuan每日一题#849 国家铁路
题目链接:国家铁路 - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/849 有亿点点难 思路:直接枚举是o ...
- daimayuan每日一题#814 排队
题目链接: 排队 - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/814 思路:首先什么情况下差的平方会最 ...
- daimayuan每日一题#812 互质
题目链接:互质 - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/812 要在1到m的闭区间内找到与给出数组 ...
- daimayuan每日一题#810 最短路计数
题目链接: 提交记录 #239296 - Daimayuan Online Judgehttp://oj.daimayuan.top/submission/239296 思路: 一开始写复杂了,以为要 ...
- daimayuan每日一题#863 吃糖果
思路:很明显的尺取,从两端不停向中间走,遇到相等就更新.不相等就小的移动. //#define pei_pei_//#include<bits/stdc++.h> #include< ...
- 2022-04-14每日刷题打卡
2022-04-14每日刷题打卡 代码源--每日一题 上帝的集合 - 题目 - Daimayuan Online Judge 题目描述 现在上帝有一个空集合,现在他命令你为他执行下列三种操作 n 次, ...
- 2022-04-01每日刷题打卡
2022-04-01每日刷题打卡 代码源--每日一题 Lusir的游戏 - 题目 - Daimayuan Online Judge Lusir 正在玩一个古老的基于 DOS 的游戏. 游戏中有 N+1 ...
- 2022-03-10每日刷题打卡
2022-03-10每日刷题打卡 力扣--每日一题 589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每 ...
- 2022-03-02每日刷题打卡
2022-03-02每日刷题打卡 代码源--div2每日一题 Alice的德州扑克 - 题目 - Daimayuan Online Judge 德州扑克是目前世界上最流行的扑克游戏,全世界有众多相关的 ...
最新文章
- 中文 代码 谷歌_Chrome谷歌浏览器下不支持css字体小于12px的解决办法
- Struts2配置文件详解
- java生成图片验证码
- Python学习笔记:模块与包
- MFC开发IM-第二十七篇、如何引入acl,解决Json解析问题
- java反射取实体字符串_JAVA反射机制 通过反射 Field类获取和修改对象类的字符串值...
- ubantu 黑屏_死机黑屏专题上线啦,早鸟只要299,看完薪水翻一番
- 【第二周】结对编程(宫丽君和林莉):四则运算
- matplotlib-plt.title
- 大数据Vue项目案例总结
- Maven无法下载com.oracle:ojdbc14:jar解决方法
- python时间序列预测不连续怎么办_用Python处理非平稳时间序列攻略
- java源码中的生词摘录成有道词典单词本
- 数据包络分析--综合的双目标数据包络分析模型
- 各种常用的默认端口号归纳
- 河南大学大计算机考研复试分数线预测,2017年河南大学考研复试分数线以及复试通知...
- Cepton宣布与美国底特律顶级汽车制造商合作,赢得业内最大ADAS激光雷达量产订单
- c语言写一个电脑程序,C语言实现电脑关机程序
- 说一说我在创建星球这10多天,在星球里干了啥?
- Leetcode(13)罗马数字转整数