bzoj4807 車
题目大意:
Description
Input
Output
Sample Input
Sample Output
Solution
Code
/**************************************************************
Problem: 4807
User: 20011023
Language: C++
Result: Accepted
Time:1332 ms
Memory:17892 kb
****************************************************************/ #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=+;
const ll mod=1e10;
int n,m;
int k;
int exi[N];
int ans;
int yue[N],has[N],cnt;
int pri[N],tot;
bool vis[N];
void sieve(){
for(int i=;i<=n;i++){
if(!vis[i]){
pri[++tot]=i;
}
for(int j=;j<=tot;j++){
if(pri[j]*i>n) break;
vis[pri[j]*i]=;
if(i%pri[j]==) break;
}
}
}
void div1(int x){
for(int i=;pri[i]*pri[i]<=x;i++){
while(x%pri[i]==){
exi[i]++;
x/=pri[i];
}
}
if(x>){
int k=lower_bound(pri+,pri+tot+,x)-pri;
exi[k]++;
}
}
int div2(int x){
int now=x;
for(int i=;pri[i]*pri[i]<=x;i++){
if(now%pri[i]==){
while(now%pri[i]==){
if(exi[i]){
exi[i]--;
x/=pri[i];}
now/=pri[i];
}
}
}
if(now>){
int k=lower_bound(pri+,pri+tot+,now)-pri;
if(exi[k]){
exi[k]--;
x/=pri[k];
}
}
return x;
}
struct big{
ll a[];
int cnt;
void pre(){
cnt=,a[]=;
}
void mul(const ll &x){
int ji=;
for(int i=;i<=cnt;i++){
a[i]=a[i]*x+ji;
ji=a[i]/mod;
a[i]%=mod;
}
if(ji){
a[++cnt]=ji;
}
if(cnt>) cnt=;
}
void op(){
while(a[cnt]==&&cnt>) cnt--;
printf("%lld",a[cnt--]);
while(cnt)printf("%010lld",a[cnt--]);
}
}A;
void wrk(){
A.pre();
for(int i=m+;i<=n;i++){
int re=div2(i);
A.mul(re);
}
}
int main()
{
scanf("%d%d",&n,&m);
if(m>n) swap(n,m);
if(n==m){
printf("");return ;
}
else if(n==){
printf("%d",m);return ;
}
else if(m==){
printf("%d",n);return ;
}
sieve();
for(int i=;i<=n-m;i++){
div1(i);
}
wrk();
A.op();
return ;
}
Conclusion
质因数分解往往可以起到意想不到的优化,因为一个数的分解呈现了它的本质。
决定了一切的乘除,gcd,找因数等运算。
1.乘除,本质上是质因子次数的加减。
2.gcd本质上是所有质因子次数取min再相乘。lcm则取max
3.因数的产生本质上是一个乘法原理。质因子次数的选择也决定了因数的数值。
并且,处理一些gcd问题时,质因数分解的考虑方式也值得去尝试。
bzoj4807 車的更多相关文章
- BZOJ4807:車(组合数学,高精度)
Description 众所周知,車是中国象棋中最厉害的一子之一,它能吃到同一行或同一列中的其他棋子.車跟車显然不能在一起打起来,于是rly一天又借来了许多许多的車在棋盘上摆了起来……他想知道,在N× ...
- Python 基礎 - 元組與簡易購物車實做
tuple(元組) 其實跟列表差不多,也是存一組數,只不過是它一旦建立了,就不能修改了,只能做 切片 跟 查詢,所以只叫 只讀列表 語法: name = ("Rogers", &q ...
- CH6802 車的放置 和 CH6B24 Place the Robots
6802 車的放置 0x60「图论」例题 描述 给定一个N行M列的棋盘,已知某些格子禁止放置.问棋盘上最多能放多少个不能互相攻击的車.車放在格子里,攻击范围与中国象棋的"車"一致. ...
- AcWing P373 車的放置
Analysis 这道题是二分图匹配,设可以放車的的地方的坐标为(i,j),则连一条i到j的有向边(注意是有向边),然后再跑匈牙利算法就好了.时间复杂度是O(nm(n+m)),在1≤n,m≤200的情 ...
- 車(rook)
[题目分析] JustPenz:我们假设n>m(不大于就交换),那最多能摆m个,所以会有(n-m)个空白,我们把这些空白插入到n中,答案就是C(n,n-m)=C(n,m);数据范围比较大,我们就 ...
- GT sport真实赛道详解 - Brands Hatch | 伯蘭士赫治GP賽車場
参考:GT sport所有赛道简介 GT Sport - Tip/Guide For FASTER LAP TIMES (Brands Hatch) 赛道介绍.跑法.赛事网上都有大把的视频. GT s ...
- CH6802 車的放置
原题链接 和棋盘覆盖(题解)差不多. 将行和列看成\(n+m\)个节点,且分属两个集合,如果某个节点没有被禁止,则行坐标对应节点向列坐标对应节点连边,然后就是求二分图最大匹配了. #include&l ...
- [題解](最小生成樹/LCA)luogu_P1967貨車運輸
一道好題不出所料又抄的題解 1.首先對於這張圖肯定要考慮走哪些邊不走哪些邊,發現我們想要的肯定那些邊權最大的邊,所以想到最大生成樹 這樣能保證選到盡量大的邊 2.跑完最大生成樹后每兩點之間就有唯一路徑 ...
- 【2018.9.20】JOI 2017 Final T2「準急電車 / Semiexpress」
题目描述 JOI 铁路公司是 JOI 国唯一的铁路公司. 在某条铁路沿线共有 $N$ 座车站,依次编号为 $1...N$. 目前,正在服役的车次按照运行速度可分为两类:高速电车(简称快车)与普通电车( ...
随机推荐
- 2017-2018-2 20155315《网络对抗技术》Exp6 :信息搜集与漏洞扫描
实验目的 进行信息搜集的工作,为实战做准备 教程 实验内容 外围信息搜集 NMAP OpenVAS 实验步骤 (一)各种搜索技巧的应用 实战的前提是进行信息搜索.当我们想要有针对地进行操作的时候,就要 ...
- Exp3
利用不同免杀方式生成文件 1.msfvenom 使用msfvenom命令查看功能介绍 其中有: -p 选择一个载荷(或者叫模块) -l 载荷列表 -f 生成的文件格式 -e 编码方式 -l 编码次数 ...
- JavaEE笔记(十四)
#SSH配置文件整合笔记实例 spring-BaseBean.xml <?xml version="1.0" encoding="UTF-8"?> ...
- Js读取XML文件为List结构
习惯了C#的List集合,对于Javascript没有list 极为不舒服,在一个利用Js读取XML文件的Demo中,决定自己构建List对象,将数据存入List. 第一步,Js读取XML文件知识 X ...
- 汇编 shr 逻辑右移指令,shl 逻辑左移指令,SAL 算术左移指令,SAR 算术右移指令
知识点: shr 逻辑右移指令 shl 逻辑左移指令 一.SHL 逻辑左移指令测试 shr 逻辑右移指令 右移一位相当于整除2 shl 逻辑左移指令 左移一位相当于乘2 //很多时候会溢出 //& ...
- HTML基础之DOM操作
DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象.可以通过dom对象中j ...
- apache目录别名
#默认家目录DocumentRoot "/var/www/html"<Directory "/var/www"> AllowOverride Non ...
- 如何唯一确定一个 Java 类?
今天偶然想起之前和朋友讨论过的一个问题:如何唯一确定一个 Java 类?我相信大多数朋友遇到这个问题的回答都是:类的全路径呗.但事实上,唯一确定一个 Java 类,单单靠类路径是不够的,还要多加上一个 ...
- openstack horizon 开发第三天
工作流:工作流是带有选项的复杂表单,每个工作流必须包含扩展Workflow, Step和的类Action1. url.py 路由处理 RESOURCE_CLASS = r'^(?P<resour ...
- 01-docker简介
如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...